【发布时间】:2022-01-07 07:16:02
【问题描述】:
我有一张桌子:
Date | ID | Company | Click
-----------+----+---------+--------
01/01/2021 | 01 | Us | 1
01/01/2021 | 01 | Us | 1
01/01/2021 | 01 | Other | 1
01/01/2021 | 02 | Us | 0
01/01/2021 | 02 | Other | 0
02/01/2021 | 03 | Us | 1
02/01/2021 | 03 | Us | 1
02/01/2021 | 04 | Us | 0
我想按日期分组并计数:每天有多少不同的 ID,有多少 唯一 ID 有 clicked=1 和 Company="Us"
我当前的代码是:
create table grouped as
select date
, count(distinct ID) as ID_count
, sum(case when company="Us" and clicked=1 then 1 else 0 end) as Click_count
from have
group by 1
结果应该是这样的:
Date | ID_count | Click_count
-----------+----------+------------
01/01/2021 | 2 | 1
02/01/2021 | 2 | 1
您会注意到我的代码计算了重复的 ID,因此 click_count 列在两个日期中都取值 2。我该如何解决?
【问题讨论】:
-
实际上,您的查询返回
Click_count = 1: sqlfiddle.com/#!15/ef22e8/10(在 PostgreSQL 上执行)。请不要使用group by 1。请改用group by date。 -
请标记您的数据库