计算每天使用的不同ID的数量

时间:2017-11-08 15:26:43

标签: sql postgresql

我有一个包含以下一般结构的表,其中包含一个工作周的交易,每个交易都与一个卡ID相关联:

CardID----Time(timestamp)
1         2017-07-31 13:03:00
1         2017-08-03 14:00:01
1         2017-08-03 19:32:33
2         2017-08-01 09:09:09
2         2017-08-01 12:03:45
3         2017-08-02 15:31:00
4         2017-08-02 20:09:10
4         2017-08-04 10:38:12
5         2017-07-31 11:35:03
5         2017-08-01 11:30:12
5         2017-08-02 11:32:53
5         2017-08-03 11:43:31
5         2017-08-04 11:12:21

我正在寻找每个不同ID每天返回一个简单的活动列表,但具体日期并不重要,每天的实际交易次数也不重要。从本质上讲,代码应该返回如下内容:

DaysInWeek----#Cards
1             2
2             2
3             0
4             0
5             1

我目前的代码如下:

select distinct dow
,count(distinct id)
from (
select distinct id,
count(date_trunc('day', tiempo2)) as dow
from public.etapas
group by 1
)a 
group by 1

然而,它返回89行DaysInWeek,范围从1到113.我对这个错误可能来自哪里感到迷茫,但怀疑它与date_trunc和日期格式(时间戳)有关)。但是,当我运行一个只返回dow的简单代码时,按预期只有5行。

1 个答案:

答案 0 :(得分:0)

如果我理解正确,你似乎想要:

select numdays, count(*) 
from (select id, count(distinct date_trunc('day', tiempo2)) as numdays
      from public.etapas
      group by id
     ) e
group by numdays
order by numdays;