我正在尝试使用SQL查询来找出有多少个学生在同一学期学习了2门科目。
我有一个有3行的表格,我想找出哪个学生在同一学期同时研究了科目“ 4877”和“ 4897”。但是我不知道如何形容“同一学期”。
学生学科学期 1070781 4877 126 1070781 4897 126 1076677 4877 135 1078595 4877 126 1078595 4897 126 1078716 4897 127 1079496 4877 126 1079496 4897 126 1079627 4897 127 1080640 4877 127 ...
SELECT student
FROM table
WHERE "studied 4877 and 4897 in the same semester";
Run Code Online (Sandbox Code Playgroud)
学生 1070781 1078595 1079496 ...
您可以使用以下查询:
SELECT studentid, semester
FROM mytable
WHERE subject IN (4877, 4897)
GROUP BY studentid, semester
HAVING COUNT(DISTINCT subject) = 2
Run Code Online (Sandbox Code Playgroud)
该查询返回至少一个学期参加过这两个科目的所有学生证。
注意:该HAVING子句使用COUNT DISTINCT而不是简单的方法COUNT,以避免像以下情况那样返回假阳性记录:
student subject semester
------------------------
1070781 4877 126
1070781 4877 126
Run Code Online (Sandbox Code Playgroud)