我正在尝试使用SQL查询来找出有多少学生在同一学期学习了2门科目。
我有一个有3行的表格,我想找出哪个学生在同一学期同时研究了科目“4877”和“4897”。但我不知道该如何形容“同一学期”。
student subject semester 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";
学生
1070781
1078595
1079496
...
最佳答案
您可以使用以下查询:
SELECT studentid, semester
FROM mytable
WHERE subject IN (4877, 4897)
GROUP BY studentid, semester
HAVING COUNT(DISTINCT subject) = 2
该查询返回至少一个学期参加过这两个科目的所有学生证。
注意:
HAVING
子句使用COUNT DISTINCT
而不是简单的COUNT
,以避免在以下情况下返回假阳性记录:student subject semester
------------------------
1070781 4877 126
1070781 4877 126
关于sql - 如何在 'same'条件中选择一个值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55702611/