与えられたデータセットにいくつの異なる女性と男性が存在するかを示すクエリを作成しようとしています。その人物は電話番号で識別されます。同じ 'tel'を複数回表示することは可能ですが、 'telの性別は1回だけカウントする必要があります!条件がユニークである場合のMySQLの個別カウント
7136609221 - 男性
7136609222 - 男性
7136609223 - 女性
7136609228 - 男性
7136609222 - 男性
7136609223 - 以下をもたらすであろう女性
このexample_dataset。
総ユニーク性別カウント:4
総ユニーク男性回数:3
総ユニーク女性の数:1
マイしようとしたクエリ:
SELECT COUNT(DISTINCT tel, gender) as gender_count,
COUNT(DISTINCT tel, gender = 'male') as man_count,
SUM(if(gender = 'female', 1, 0)) as woman_count
FROM example_dataset;
そこに2つの試みが実際にあります。 COUNT(DISTINCT tel, gender = 'male') as man_count
はちょうどCOUNT(DISTINCT tel, gender)
と同じものを返しているようです - そこには修飾子を考慮しません。 SUM(if(gender = 'female', 1, 0))
はすべての女性レコードをカウントしますが、DISTINCTによってフィルタリングされません。
あなたがこれを実行すると、あなたは答えとして何を得ていますか? –
'COUNT(DISTINCT tel、gender = '男性')'は、man_count = 4を間違って指定します。それは電話ごとに3つずつ固有でなければなりません。 – Federico
SUM(if(gender = 'female'、1,0))は、woman_count = 2を間違って指定します。それは1でなければなりません。 – Federico