エンジニアのひよこ_level10

毎日更新してた人。たまに記事書きます。

【MySQL】GROUPBYでまとめた後、countの重複を取り除く【298日目】

こんなときにつかう

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することができる。