【发布时间】:2021-07-05 01:16:30
【问题描述】:
我有客户操作表:
date, client_id, gender
1 1 M
1 1 M
1 2 M
1 2 M
1 3 F
2 1 M
2 1 M
2 1 M
2 2 M
2 2 M
2 3 F
2 3 F
2 4 F
2 5 M
2 5 M
etc
期望的输出是:
date, amount of males, (also need amount of females)
1 2 1
2 3 2
我需要按日期对其进行分组,所以我做到了,然后我的目标是找到每个分组中每种性别的数量。 所以我试着这样做来计算男性的数量:
sum(case when gender = 'M' then 1 else NULL end) as 'M%'
但其计数的客户 id 1 和 2 各两次,但我需要区分它。 在上面的示例中,我希望这会返回 2,因为 2 男性。但它返回 4 因为不同的构造不起作用。 我试过了,但它不起作用,结果是“1”:
sum(distinct case when gender = 'M' then 1 else NULL end) as 'M%'
【问题讨论】:
-
您是否只需要
date和gender计数,而忽略client_id? -
我使用了
group by date,所以我需要计算每组中男性的数量。但只有“唯一”值,所以在示例表中它应该是 2,因为有 2 个男性性别的 client_id。不是 4 -
请提供样本数据和所需的输出
-
如果您找到的解决方案与已发布的答案不同,请将其作为新答案发布。如果以下答案之一作为解决方案,请单击其分数旁边的复选标记“接受”它。不要编辑您的问题以包含解决方案;这不是问题的目的。