我想选择不同class_id的总数,其中至少有两个学生共享同一个生日。
class_id student_id birthday
1 30 1994-10-01
1 23 1994-01-01
1 19 1994-02-01
1 11 1994-03-01
2 9 1994-02-01
2 43 1994-03-01
3 41 1994-06-01
3 21 1994-05-01
4 9 1992-05-22
4 20 1992-09-05
答案 0 :(得分:0)
在class_id
的内部选择组中,只选择那些具有不同数量的唯一和总生日的人。
然后计算外部选择中的class_id
个。
select count(*)
from
(
select class_id
from your_table
group by class_id
having count(*) > count(distinct birthday)
) tmp
答案 1 :(得分:0)
编写一个子查询,在同一个类中查找所有重复的生日。然后从该子查询中计算SELECT COUNT(DISTINCT class_id)
的不同类的数量。
SELECT COUNT(DISTINCT class_id) FROM (
SELECT class_id, birthday
FROM YourTable
GROUP BY class_id, birthday
HAVING COUNT(*) > 1) AS x