Apply COUNT function on a subgroup of groups

空扰寡人 提交于 2019-12-05 16:51:56

Nope, no need for analytic functions; they're difficult to have in the same query as an aggregate function anyway.

You're looking for the case statement again, you just have to put it in the GROUP BY.

select hire_year
     , sum(married) as married
     , sum(certified) as certified
     , sum(religious) as religious
     , case when salary > 2000 then 'A'
            when salary >= 1000 then 'B'
            else 'C' end as salary_class
  from employees
 group by hire_year
     , case when salary > 2000 then 'A'
            when salary >= 1000 then 'B'
            else 'C' end

Note that I've changed your count(case when...) to sum(). This is because you're using a boolean 1/0 so this'll work in the same manner but it's a lot cleaner.

For the same reason I've ignored your between in your salary calculation; there's no particular need for it as if the salary is greater than 2000 the first CASE has already been fulfilled.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!