gpt4 book ai didi

sql - 在 postgresql 中使用年龄

转载 作者:行者123 更新时间:2023-11-29 14:01:58 25 4
gpt4 key购买 nike

我的 postgresql 8.4 数据库中有一个这样的表:

id(serial), event_type_id(id, foreign key), ts(timestamp)

我有两个事件类型 ID,我需要查看它们之间的年龄。

Event_type_id 1 = Arrive
Event_type_id 2 = Leaves

示例数据

 id | event_type_id |             ts             
----+---------------+----------------------------
21 | 6 | 2012-04-03 16:02:18.739274
20 | 5 | 2012-04-03 08:44:13.244287

我想按天对这些进行分组,看看每天有多少小时。

谁能告诉我如何分组和计算年龄?

到目前为止我已经有了这个,但我需要生成一个系列来加入或类似的东西

解决方案不知道这是否是最佳做法,但它对我有用。

SELECT dx, age(max(ts), min(ts)) 
from generate_series('2012-04-01', '2012-04-14', interval '1 day') as dx
left join events on (ts >= dx and ts < dx + '23 hours 59 minutes' and event_type_id in (5,6))
group by dx
order by dx;

最佳答案

我认为你需要:

select age(max(ts), min(ts)), ts::date as date
from events
where event_type_id in (5,6)
group by date;

但是你的问题不清楚。我假设你的意思是你有一个像这样的表(不是数据库):

create table events (
id serial,
event_type_id int references event_types,
ts timestamp
);

并且您需要为每个日期计算类型 5 或 6 的第一个事件和最后一个事件之间的间隔。

关于sql - 在 postgresql 中使用年龄,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10006747/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com