我的時間和方法等列很少。我需要顯示一天執行的操作。
time,method
01-Sep-2022,1
01-Sep-2022,2
01-Sep-2022,2
01-Sep-2022,3
01-Sep-2022,3
01-Sep-2022,3
02-Sep-2022,1
03-Sep-2022,1
04-Sep-2022,1
Output
time,method
01-Sep-2022,1,1
01-Sep-2022,2,2
01-Sep-2022,3,3
02-Sep-2022,1,1
03-Sep-2022,1,1
04-Sep-2022,1,1
如何撰寫 Oracle 查詢?
uj5u.com熱心網友回復:
如何在 Oracle 中按日期而不是日期時間分組?
Oracle 沒有DATETIME資料型別;它只有DATE并且TIMESTAMP兩者都始終包含時間組件(即使您使用的用戶界面可能選擇僅顯示日期組件,它仍然始終具有時間組件)。
要按日期組件進行分組,請使用該TRUNC函式將時間組件截斷回午夜,以便同一天的所有值都具有相同的截斷時間:
SELECT TRUNC(time) AS day,
method,
count(*)
FROM table_name
GROUP BY TRUNC(time), method
ORDER BY day, method;
其中,對于樣本資料:
CREATE TABLE table_name (time, method) AS
SELECT DATE '2022-09-01' INTERVAL '1' HOUR, 1 FROM DUAL UNION ALL
SELECT DATE '2022-09-01' INTERVAL '2' HOUR, 2 FROM DUAL UNION ALL
SELECT DATE '2022-09-01' INTERVAL '3' HOUR, 2 FROM DUAL UNION ALL
SELECT DATE '2022-09-01' INTERVAL '4' HOUR, 3 FROM DUAL UNION ALL
SELECT DATE '2022-09-01' INTERVAL '5' HOUR, 3 FROM DUAL UNION ALL
SELECT DATE '2022-09-01' INTERVAL '6' HOUR, 3 FROM DUAL UNION ALL
SELECT DATE '2022-09-02' INTERVAL '7' HOUR, 1 FROM DUAL UNION ALL
SELECT DATE '2022-09-03' INTERVAL '8' HOUR, 1 FROM DUAL UNION ALL
SELECT DATE '2022-09-04' INTERVAL '9' HOUR, 1 FROM DUAL;
輸出:
| 天 | 方法 | 數數(*) |
|---|---|---|
| 2022-09-01 00:00:00 | 1 | 1 |
| 2022-09-01 00:00:00 | 2 | 2 |
| 2022-09-01 00:00:00 | 3 | 3 |
| 2022-09-02 00:00:00 | 1 | 1 |
| 2022-09-03 00:00:00 | 1 | 1 |
| 2022-09-04 00:00:00 | 1 | 1 |
小提琴
uj5u.com熱心網友回復:
您應該按時間、方法使用分組。
CREATE TABLE timdt
(
time date,
method int
);
INSERT INTO timdt (time,method)VALUES('01-Sep-2022', '1');
INSERT INTO timdt (time,method)VALUES('01-Sep-2022', '2');
INSERT INTO timdt (time,method)VALUES('01-Sep-2022', '2');
INSERT INTO timdt (time,method)VALUES('01-Sep-2022', '3');
INSERT INTO timdt (time,method)VALUES('01-Sep-2022', '3');
INSERT INTO timdt (time,method)VALUES('01-Sep-2022', '3');
INSERT INTO timdt (time,method)VALUES('02-Sep-2022', '1');
INSERT INTO timdt (time,method)VALUES('03-Sep-2022', '2');
INSERT INTO timdt (time,method)VALUES('04-Sep-2022', '3');
select time,method,count(*) from timdt group by time,method order by time,method;
輸出:
TIME METHOD COUNT(*)
01-SEP-22 1 1
01-SEP-22 2 2
01-SEP-22 3 3
02-SEP-22 1 1
03-SEP-22 2 1
04-SEP-22 3 1
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/506882.html
上一篇:按列過濾行和分組
