2024-10-13|閱讀時間 ‧ 約 0 分鐘

Leetcode 解鎖 - Students and Examinations (MS SQL SERVER)

有三個表:

  1. Students 表記錄了每個學生的 ID 和姓名。
    • student_id: 每個學生的唯一 ID。
    • student_name: 學生的姓名。
  2. Subjects 表記錄了學校中的所有科目名稱。
    • subject_name: 每個科目的唯一名稱。
  3. Examinations 表記錄了每個學生參加的考試。
    • student_id: 學生的 ID。
    • subject_name: 科目名稱。
raw-image

請使用MS SQL Server查詢每個學生參加每門考試次數。結果表需要按 student_idsubject_name 排序。

結果表應包含以下欄位:

  • student_id: 學生的 ID。
  • student_name: 學生的姓名。
  • subject_name: 科目名稱。
  • attended_exams: 學生參加該科目考試的次數。


我們可以通過 LEFT JOIN 把學生表與科目表連接,然後再與考試表連接來計算每個學生在每個科目中參加考試的次數。

SELECT s.student_id, s.student_name, sub.subject_name,

COUNT(e.subject_name) AS attended_exams

FROM Students s

CROSS JOIN Subjects sub

LEFT JOIN Examinations e

ON s.student_id = e.student_id AND sub.subject_name = e.subject_name

GROUP BY s.student_id, s.student_name, sub.subject_name

ORDER BY s.student_id, sub.subject_name;

解釋:

  1. 使用 CROSS JOIN 來生成所有學生和科目組合。
  2. 使用 LEFT JOINExaminations 表中的考試數據連接進來。
  3. 使用 COUNT 函數來計算每個學生在每個科目參加考試的次數。
  4. 使用 GROUP BY 對每個學生和科目進行分組,並按學生 ID 和科目名稱排序。



謝謝您花時間將此篇文章讀完,若覺得對您有幫助可以幫忙按個讚、分享來或是珍藏喔!也歡迎Follow我的Threads,持續追蹤生產力工具、商業分析、商業英文的實用範例,提升自己的職場力喔!

分享至
成為作者繼續創作的動力吧!
© 2024 vocus All rights reserved.