database - 查找每个 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
任何帮助将不胜感激!
解决方案
您可以使用date_trunc()
提取仅精确到当天的时间戳,并count()
使用DISTINCT
. 这样一天只计算一次(每did
)。
SELECT did,
count(DISTINCT date_trunc('day', timestamp)) presence_on_number_of_days
FROM elbat
GROUP BY did;
推荐阅读
- mysql - MySQL-如何在给定周数的情况下提取星期一?
- r - R-Markdown 的 render_site 函数正在删除 .git 文件夹的内容
- c# - 在 C# 中编辑 XPS 打印假脱机文件(.SPL 扩展名)(另存为 Zip 问题)
- c# - 如何解析txt文件中的netstat输出并根据PID获取所有远程IP地址作为变量?
- ubuntu - 为什么每个 JavaFX 应用程序都会在我的系统上闪烁?
- amazon-cloudformation - CloudFormation 模板:减少样板代码
- sql - 如何修改与 ACCESS 数据库一起使用的代码以与 SQL 数据库一起使用
- azure - 如何在 Azure Service Bus Binding Function 2.x 中使用死信队列?
- javascript - 如何为数据切换折叠选择父级?
- c# - 动态调用两种方法之一