[英]Not a GROUP BY expression - OVER(PARTITION BY)
我正在創建一個查詢,它顯示每月每 function 的總數,但我收到一個錯誤 - 而不是 GROUP BY 表達式。
我在 select 聲明中有這個 -
sum(a.sched_hours) OVER(PARTITION BY d.function) AS total_hours
我能做些什么來顯示正確的結果嗎?
不要使用解析 function,而是使用普通聚合 function:
SELECT function_name,
TRUNC(dt, 'MM') AS month,
SUM(sched_hours) AS total_hours
FROM table_name
GROUP BY
function_name,
TRUNC(dt, 'MM')
其中,對於示例數據:
CREATE TABLE table_name (function_name, dt, sched_hours) AS
SELECT 'A', DATE '2022-01-01', 10 FROM DUAL UNION ALL
SELECT 'A', DATE '2022-01-02', 10 FROM DUAL UNION ALL
SELECT 'A', DATE '2022-02-01', 20 FROM DUAL UNION ALL
SELECT 'A', DATE '2022-02-02', 20 FROM DUAL UNION ALL
SELECT 'B', DATE '2022-01-01', 20 FROM DUAL UNION ALL
SELECT 'B', DATE '2022-01-02', 20 FROM DUAL UNION ALL
SELECT 'B', DATE '2022-02-01', 30 FROM DUAL UNION ALL
SELECT 'B', DATE '2022-02-02', 30 FROM DUAL;
輸出:
FUNCTION_NAME 月 全部小時數 一種 22 年 1 月 1 日 20 一種 01-FEB-22 40 乙 22 年 1 月 1 日 40 乙 01-FEB-22 60
如果您想要所有月份的每個 function 的贈款總額,則將聚合 function 嵌套在分析 function 中:
SELECT function_name,
TRUNC(dt, 'MM') AS month,
SUM(sched_hours) AS hours,
SUM(SUM(sched_hours)) OVER (PARTITION BY function_name) AS total_hours
FROM table_name
GROUP BY
function_name,
TRUNC(dt, 'MM')
哪些輸出:
FUNCTION_NAME 月 小時 全部小時數 一種 22 年 1 月 1 日 20 60 一種 01-FEB-22 40 60 乙 22 年 1 月 1 日 40 100 乙 01-FEB-22 60 100
db<> 在這里擺弄
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.