Oracle
 sql >> база данни >  >> RDS >> Oracle

Приложете функцията COUNT върху подгрупа от групи

Не, няма нужда от аналитични функции; така или иначе е трудно да ги има в една и съща заявка като агрегатна функция.

Търсите case отново, просто трябва да го поставите в 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

Обърнете внимание, че промених вашия count(case when...) към sum() . Това е така, защото използвате булево 1/0, така че това ще работи по същия начин, но е много по-чисто.

По същата причина пренебрегнах вашето between при изчисляване на вашата заплата; няма особена нужда от това, тъй като ако заплатата е по-голяма от 2000, първият СЛУЧАЙ вече е изпълнен.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да използвате ora_hash в колона с тип данни xmltype

  2. Какви привилегии са необходими за създаване на потребител в Oracle с потребител, който не е DBA?

  3. Oracle използва низ в състояние IN

  4. Функция STUFF на Oracle, еквивалентна на SQL Server?

  5. NPM Oracle:Вмъкване на BLOB