我试图构建一个查询,告诉我在给定数据集中有多少个不同的女性和男性。每个人都由一个数字“tel”进行标识。同一个“tel”可能会出现多次,但是该“tel”的性别只应计算一次!
7136609221 - 男性
7136609222 - 男性
7136609223 - 女性
7136609228 - 男性
7136609222 - 男性
7136609223 - 女性
这个示例数据集将产生以下结果。
总唯一性别计数: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 tels进行过滤。
COUNT(DISTINCT tel, gender = 'male')
的结果是 man_count = 4,但实际上应该是 3,因为按照电话号码去重。 - Federico