如何在嵌套的聚合case语句中使用groupby?

dfuffjeb  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(274)

我正在尝试编写一个查询,显示一个id列和一个自定义计算。

Select c.ID,
       CASE
       WHEN m.TYPE='Category 1'
       THEN ROUND((COUNT(c.ID)-sum(m.TICKETS))/COUNT(C.ID),2)
       END Custom_Calc
from   Master_Data M
       inner join Collection_Data C
       on M.CASE__C=C.ID 
group by
       c.ID

当我运行这个查询时,它会产生一个错误
ora-00979:不是表达式分组
我知道我需要包括 m.Typegroup by 但我不想看到该级别的数据。它为每一行生成两行 ID . 理想情况下,我只希望每一行 ID . 我试过了 OVER (PARTITION BY ()) 子句,但它总是要求我按我不希望的类型对结果进行分组。这对计算很重要。
有人能帮我吗?非常感谢。

c6ubokkw

c6ubokkw1#

你可以试着移动 CASE 将表达式转换为聚合函数。
目前还不清楚您正在尝试应用哪些聚合函数 m.TYPE='Category 1' 筛选到,因此我假设您正在尝试筛选所有聚合:

Select c.ID,
       ROUND(
         (
           COUNT(CASE WHEN m.TYPE='Category 1' THEN c.ID END)
           - SUM(CASE WHEN m.TYPE='Category 1' THEN m.TICKETS END)
         ) / COUNT(CASE WHEN m.TYPE='Category 1' THEN c.ID END),
         2
       ) AS Custom_Calc
from   Master_Data M
       inner join Collection_Data C
       on M.CASE__C=C.ID 
group by
       c.ID

相关问题