首页 > 解决方案 > 查找每个 id 的出现天数

问题描述

我正在尝试获取“DID”存在的天数。我尝试了 group by & 分区表,但无法弄清楚

详细地说,这是数据:

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

任何帮助将不胜感激!

标签: databasepostgresql

解决方案


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

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

推荐阅读