2015-09-29 78 views
0

我想選擇至少兩個共享相同生日的學生的不同class_id的總數。MySql計算至少出現兩次的行的總數

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

在內部選擇組由class_id,採取只有那些具有獨特的和總的生日不同的號碼。

然後在外部選擇中計數那些class_id

select count(*) 
from 
(
    select class_id 
    from your_table 
    group by class_id 
    having count(*) > count(distinct birthday) 
) tmp 
+1

'count(birthday)'應該是'count(*)'。只有在使用「DISTINCT」時才需要輸入列名,或者您需要使用它來跳過空值。 – Barmar

+0

'count(class_id)'同樣的東西'。只要擺脫使用'count(colname)'的習慣,它幾乎不需要。 – Barmar

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