こんなときにつかう
select 'count(id)' FROM 'users' GROUP BY 'group_id';
GROUP BYではgroup_idでまとめているが、idの方で重複がある場合。
この時、 id
が[1,2,3,4,4,5]だった場合、 count(id)
の値は6になる。
id
の4が重複しているので、合計を5にしたい時
こうする
select 'count(DISTINCT id)' FROM 'users' GROUP BY 'group_id';
countする前のidの重複を防いだ後に、countをすることができる。
(応用)片方を重複削除して、もう片方を重複削除したくない時
select 'count(id), count(DISTINCT name)' FROM 'users' GROUP BY 'group_id';
これで、nameは重複削除してcountするが、idは重複削除せずにcountすることができる。