Sql 按日期时间分组订购
我有以下sql:Sql 按日期时间分组订购,sql,postgresql,Sql,Postgresql,我有以下sql: SELECT floor(extract(epoch from created_date)/3600)*3600 AS "time", count(*) as total FROM event GROUP BY time ORDER BY time 并得到以下结果: +-----------------------+----------+ | time | total | +---------------
SELECT
floor(extract(epoch from created_date)/3600)*3600 AS "time",
count(*) as total
FROM event
GROUP BY time
ORDER BY time
并得到以下结果:
+-----------------------+----------+
| time | total |
+-----------------------+----------+
| 2021-03-14 16:00:00 | 2 |
| 2021-03-14 17:00:00 | 5 |
| 2021-03-15 06:00:00 | 2 |
| 2021-03-15 07:00:00 | 1 |
+-----------------------+----------+
但是,我希望得到按时间排序的结果,如:
+-----------------------+----------+
| time | total |
+-----------------------+----------+
| 2021-03-15 07:00:00 | 1 |
| 2021-03-15 06:00:00 | 2 |
| 2021-03-14 17:00:00 | 5 |
| 2021-03-14 16:00:00 | 2 |
+-----------------------+----------+
我尝试的
我尝试添加orderbytimedesc
子句,但得到(零):
是否有任何解决方案可以“正确”排序我的结果(如示例中所示)?当
date\u trunc()
这样做更简单时,为什么要使用历元算法
SELECT DATE_TRUNC('hour', created_date) as time,
count(*) as total
FROM event
GROUP BY time
ORDER BY time;
注意:如果在事件
中有时间
列,则该列可能不明确。也可以重复该表达式:
SELECT DATE_TRUNC('hour', created_date) as time,
count(*) as total
FROM event
GROUP BY DATE_TRUNC('hour', created_date)
ORDER BY time;
请出示一些样本数据,甚至一把小提琴来展示你的行为。对我来说,这看起来很奇怪,很难重现…@s-Man我认为这种奇怪的行为是由于使用了
epoch
、extract
和floor
。用date\TRUNC('hour',created\u date)
替换建筑floor(摘录(从创建日期算起的历元)/3600)*3600
,一切开始正常工作
SELECT DATE_TRUNC('hour', created_date) as time,
count(*) as total
FROM event
GROUP BY DATE_TRUNC('hour', created_date)
ORDER BY time;