我有一张 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/