Eth*_*mih 5 postgresql datetime dbeaver amazon-athena
Select date_trunc('week',dateTime) Date_week, Max(Ranking) Runing_Total_ID
from (select datetime, id , dense_rank () over (order by datetime) as Ranking
from Table1)
group by 1
Run Code Online (Sandbox Code Playgroud)
这个查询可以让我按周获得总 ID 的运行总数。但在 Postgres 中,一周默认从星期一开始。有什么办法可以将一周的开始时间更改为星期日吗?
Erw*_*ter 14
目前尚不清楚计算不同日期如何转化为“按周计算的 ID 总数”。但让我们关注标题中的核心问题。
使用date_bin():
-- date_bin() in Postgres 14+
SELECT date_bin('7 days' -- stride
, datetime -- source
, timestamp '2023-1-1' -- origin
) AS date_week
, max(ranking) AS runing_total_id
FROM (SELECT datetime, dense_rank() OVER (ORDER BY datetime) AS ranking FROM tbl) sub
GROUP BY 1
ORDER BY 1, 2; -- optional
Run Code Online (Sandbox Code Playgroud)
在这种情况下,“起源”( timestamp '2023-1-1') 必须是星期日!这也是一个有效的timestamp文字。不要混合使用timestamp×tamptz以避免极端情况错误。
看:
来回移动时间戳。timestamp在喂食前添加一天date_trunc(),然后再次减去:
SELECT date_trunc('week', datetime + interval '1 day') - interval '1 day' AS date_week
, max(rnk) AS runing_total_id
FROM (SELECT datetime, dense_rank() OVER (ORDER BY datetime) AS rnk FROM tbl) sub
GROUP BY 1
ORDER BY 1, 2; -- optional
Run Code Online (Sandbox Code Playgroud)
看:
| 归档时间: |
|
| 查看次数: |
9570 次 |
| 最近记录: |