[英]Not a GROUP BY expression - OVER(PARTITION BY)
I am creating a query where it shows me the total per function per month but I am getting an error - not a GROUP BY expression.我正在创建一个查询,它显示每月每 function 的总数,但我收到一个错误 - 而不是 GROUP BY 表达式。
I have this in the select statement -我在 select 声明中有这个 -
sum(a.sched_hours) OVER(PARTITION BY d.function) AS total_hours
Anything I can do to show the correct results?我能做些什么来显示正确的结果吗?
Do not use an analytic function, use the normal aggregation function instead:不要使用解析 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')
Which, for the sample data:其中,对于示例数据:
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;
Outputs:输出:
FUNCTION_NAME FUNCTION_NAME
MONTH 月
TOTAL_HOURS 全部小时数
A 一种
01-JAN-22 22 年 1 月 1 日
20 20
A 一种
01-FEB-22 01-FEB-22
40 40
B 乙
01-JAN-22 22 年 1 月 1 日
40 40
B 乙
01-FEB-22 01-FEB-22
60 60
If you want a grant total for each function across all the months then nest the aggregation function inside the analytic function:如果您想要所有月份的每个 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')
Which outputs:哪些输出:
FUNCTION_NAME FUNCTION_NAME
MONTH 月
HOURS 小时
TOTAL_HOURS 全部小时数
A 一种
01-JAN-22 22 年 1 月 1 日
20 20
60 60
A 一种
01-FEB-22 01-FEB-22
40 40
60 60
B 乙
01-JAN-22 22 年 1 月 1 日
40 40
100 100
B 乙
01-FEB-22 01-FEB-22
60 60
100 100
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.