gpt4 book ai didi

sql - PostgreSQL如何按小时获取订单

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

我有一张 table 看起来像

Order
OrderId
OrderStatus
OrderTime

我还有一张 table

OrderId
OrderLineId
OrderLineAmount
OrderLineCost

我正在尝试获取 2 个日期之间每小时的平均金额,即可能是一天的开始和结束,或者一周的开始和结束。因此,例如,如果两个订单分别在上午 9 点和 9:30 以 50 英镑的价格下达。然后我试图得到:

20/07/2018 09:00:00 - 20/07/2018 10:00:00 
2
100

这是否有意义?

我目前有这个但不是我需要的方式

SELECT 
COUNT(*) as "number of orders",
sum(ol.quantity * ol.amount) as "line total",
to_timestamp(floor((extract('epoch' from "ordertimestamp") / 600 )) * 600) AT TIME ZONE 'UTC' as interval_alias
FROM "Order" as o
inner join "OrderLine" as ol on o.orderid = ol.orderid
GROUP BY interval_alias;

任何帮助都会很棒,谢谢

最佳答案

给你:

create table ord (
orderid int,
orderstatus int,
ordertime timestamp
);

insert into ord values (1, 1, '2018-07-20 09:10:00');
insert into ord values (2, 1, '2018-07-20 09:40:00');
insert into ord values (3, 1, '2018-07-20 10:15:00');

create table orderline (
orderid int,
orderlineid int,
orderlineamount int,
orderlinecost int
);

insert into orderline values (1, 100, 50, 40);
insert into orderline values (2, 100, 25, 40);
insert into orderline values (2, 100, 25, 40);
insert into orderline values (3, 10, 1234, 40);

select
date_trunc('hour', o.ordertime),
count(distinct o.orderid),
sum(l.orderlineamount)
from ord o
join orderline l on l.orderid = o.orderid
group by date_trunc('hour', o.ordertime)
order by date_trunc('hour', o.ordertime);

结果:

date_trunc                     count                 sum                   
---------------------------------------------------------------------------
2018-07-20 09:00:00.0 2 100
2018-07-20 10:00:00.0 1 1234

关于sql - PostgreSQL如何按小时获取订单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51442914/

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