假设我有两个SQL表(由这个问题组成)
班级
Name | Id
---------------
Art | 1
CS | 2
Math | 3
StudentInClass
StudentId | ClassId
--------------------
1 | 1
3 | 2
1 | 1
现在,StudentId和ClassId应该是唯一的对(我知道可以将其定义为约束,但是对于班级中的这个特定问题,这是无关紧要的)。我需要定义一个查询,该查询将显示studentId,classId,并计算学生是否在班级中出现多次。因此,基本上,重复ID对的数量。我将如何去做?
(显示行以供参考)
StudentId | ClassId | Count
-----------------------------
1 | 1 | 2
这是一个简单的聚合查询,带有having
子句,可过滤出现多次的元组:
select StudentId, ClassId, count(*) cnt
from StudentInClass
group by StudentId, ClassId
having count(*) > 1