MySql计算行的总数,其值至少出现两次

时间:2015-09-29 00:59:31

标签: mysql sql

我想选择不同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

2 个答案:

答案 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