【发布时间】:2013-11-09 10:06:53
【问题描述】:
我正在尝试构建一个查询,告诉我给定数据集中有多少不同的女性和男性。该人由数字“电话”标识。同一个 'tel' 可能出现多次,但那个 'tel' 的性别应该只计算一次!
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')错误地给出了 man_count = 4;它应该是 3 -- 每个电话唯一。 -
SUM(if(gender = 'female', 1, 0)) 错误地给出了 woman_count = 2。它应该是 1(每个电话唯一)