我在 Oracle v11 上有一個簡單的查詢來對記錄進行分組和計數,沒什么特別的:
select ADDR, count(ADDR) from DBTB group by ADDR;
rable 也有 TIMESTAMP 列,我要做的是按小時對唯一的 ADDR 進行分組和計數。例如在桌子上:
TIMESTAMP ADDR
19-OCT-2021 17:15:00 12345
19-OCT-2021 17:20:00 12345
19-OCT-2021 17:25:00 12345
19-OCT-2021 17:27:00 67890
19-OCT-2021 18:10:00 55555
19-OCT-2021 18:20:00 55555
19-OCT-2021 18:30:00 66666
19-OCT-2021 18:43:00 77777
輸出應該是:
HOUR COUNT
17 2
18 3
有人可以幫我做一個查詢來計算和分組按小時拆分的相同 ADDR 嗎?謝謝盧卡斯
uj5u.com熱心網友回復:
使用TO_CHAR()讓每一個時間戳的小時:
SELECT TO_CHAR("TIMESTAMP", 'HH24') HOUR,
COUNT(DISTINCT "ADDR") COUNT
FROM DBTB
GROUP BY TO_CHAR("TIMESTAMP", 'HH24');
可能您還需要按日期分組:
SELECT TRUNC("TIMESTAMP") DAY,
TO_CHAR("TIMESTAMP", 'HH24') HOUR,
COUNT(DISTINCT "ADDR") COUNT
FROM DBTB
GROUP BY TRUNC("TIMESTAMP"), TO_CHAR("TIMESTAMP", 'HH24');
或過濾特定日期:
SELECT TO_CHAR("TIMESTAMP", 'HH24') HOUR,
COUNT(DISTINCT "ADDR") COUNT
FROM DBTB
WHERE TRUNC("TIMESTAMP") = TO_DATE('19-Oct-2021', 'DD-MON-YYYY')
GROUP BY TO_CHAR("TIMESTAMP", 'HH24');
請參閱演示。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/327533.html
