我正在尝试建立一个查询,以告诉我给定数据集中有多少不同的男女。该人由数字“电话”标识。同一“电话”可能会出现多次,但是“电话”的性别只能计算一次!
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;
实际上有两次尝试。COUNT(DISTINCT tel, gender = 'male') as man_count似乎只返回了相同的内容COUNT(DISTINCT tel, gender)-它没有考虑到那里的预选赛。并且SUM(if(gender = 'female', 1, 0))计数所有女性记录,但不被DISTINCT电话过滤。
COUNT(DISTINCT tel, gender = 'male') as man_count
COUNT(DISTINCT tel, gender)
SUM(if(gender = 'female', 1, 0))
这是使用带有以下子查询的选项DISTINCT:
DISTINCT
SELECT COUNT(*) gender_count, SUM(IF(gender='male',1,0)) male_count, SUM(IF(gender='female',1,0)) female_count FROM ( SELECT DISTINCT tel, gender FROM example_dataset ) t
如果您不想使用子查询,这也将起作用:
SELECT COUNT(DISTINCT tel) gender_count, COUNT(DISTINCT CASE WHEN gender = 'male' THEN tel END) male_count, COUNT(DISTINCT CASE WHEN gender = 'female' THEN tel END) female_count FROM example_dataset