sql - 在postgres中获取每天的第一次和最后一次

标签 sql postgresql

我有一个包含日期时间字段的表created_at。我想找出每天的第一次和最后一次。

这适用于查找所有日期:

SELECT date(created_at) from foo where person_id=46 group by date(created_at);

这也适用于查找一天中的第一次和最后一次。

SELECT min(created_at), max(created_at) from foo where person_id=46 and created_at::date = '2015-09-07';

我的问题是将它们结合起来。我正在考虑使用子查询,但它只返回一个结果。

SELECT min(created_at), max(created_at) 
FROM foo 
WHERE person_id=46 
AND created_at::date IN (
SELECT date(created_at) 
FROM foo 
WHERE person_id=46 
GROUP BY date(created_at));

最佳答案

我认为这应该适合你:

选择日期(创建时间)、最小时间(创建时间)、最大时间(创建时间) 来自 foo 其中 person_id=46 按日期分组(创建时间);

关于sql - 在postgres中获取每天的第一次和最后一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40747382/

相关文章:

mysql - PHP/MySQL : How to compare selected value with input received via $_POST

postgresql - 使用 JPA 而不是 native 查询在 postgres 中获取序列的下一个值

ruby-on-rails - Date.today 与实际日期不对应

mysql - sql 查询返回所需数据量的两倍

sql - 仅使用 SQL 计算一对多关系中的子记录数

sql - 运行封装查询的最有效方式

sql - 这个mysql查询的目的是什么?

database - 行锁会影响postgreSQL中的主从吗

postgresql - 按两个嵌套关联顺序排序

sql - 如何从postgres中的n个随机组中选择所有行