【发布时间】:2021-01-09 18:37:29
【问题描述】:
我想计算每天每个时间间隔的订单数。
日期的格式是没有时区的时间戳。我似乎无法只提取时间。我每天都使用这个查询,但是有没有办法将一个月中每一天的时间间隔放在一个表中?
CASE WHEN date_created_utc >= timestamp '2020-09-01 08:00:00' AND date_created_utc <= timestamp '2020-09-01 11:00:00' THEN 'Q1'
WHEN date_created_utc >= timestamp '2020-09-01 11:00:01' AND date_created_utc <= timestamp '2020-09-01 14:00:00' THEN 'Q2'
WHEN date_created_utc >= timestamp '2020-09-01 14:00:01' AND date_created_utc <= timestamp '2020-09-01 16:00:00' THEN 'Q3'
WHEN date_created_utc >= timestamp '2020-09-01 16:00:01' AND date_created_utc <= timestamp '2020-09-01 20:00:00' THEN 'Q4'
WHEN date_created_utc >= timestamp '2020-09-01 20:00:01' AND date_created_utc <= timestamp '2020-09-01 23:59:00' THEN 'Q5'
END AS interval,
COUNT(id) as cnt
FROM order_processing
GROUP BY 1;
想要的输出表:
Day Q1 Q2 Q3 Q4 Q5
1 28 57 50 65 27
2 23 50 60 90 66
3 58 60 80 70 67
【问题讨论】:
-
“我似乎无法仅提取时间”是什么意思?您为实现这一目标做了什么尝试?
-
我使用了 ::time。我只是没有把我在这里使用的其他查询。它不适用于 case when,然后我知道那是因为它必须在聚合函数中使用。计数 (*) 过滤器对我来说是新的。
标签: sql postgresql datetime time pivot