查找每个ID出现的天数

时间:2019-08-21 21:47:25

标签: database postgresql

我正在尝试获取存在“ DID”的天数。我曾尝试通过&分区表进行分组,但无法弄清

详细来说,这是数据:

DID  timestamp 
a   2019-02-02 12:52:00
a   2019-02-03 13:23:00
a   2019-02-03 11:45:00
a   2019-02-04 15:21:00
b   2019-02-02 12:18:00
b   2019-02-02 13:54:00
b   2019-02-02 18:27:00
b   2019-02-05 19:31:00

a在2日发生一次,在3日发生两次,在4日发生一次,因此,总共'a'在3个日期出现4次

b在2日发生3次,在5日发生一次,因此在2个日期发生4次

我想要得到的是这样的输出:

DID presence_on_number_of_days
a   3
b   2

任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:1)

您可以使用date_trunc()提取仅精确到当天的时间戳,并使用count()提取DISTINCT。这样,一天只计算一次(每个did)。

SELECT did,
       count(DISTINCT date_trunc('day', timestamp)) presence_on_number_of_days
       FROM elbat
       GROUP BY did;

答案 1 :(得分:1)

您需要计算不同的日期:

select DID, count(distinct timestamp::date) presence_on_number_of_days
from tablename
group by DID