sql >> Databáze >  >> RDS >> Oracle

Použít funkci COUNT na podskupinu skupin

Ne, nejsou potřeba analytické funkce; stejně je těžké je mít ve stejném dotazu jako agregační funkce.

Hledáte case znovu, stačí jej vložit do 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

Všimněte si, že jsem změnil váš count(case when...) na sum() . Je to proto, že používáte booleovskou 1/0, takže to bude fungovat stejným způsobem, ale je to mnohem čistší.

Ze stejného důvodu jsem ignoroval vaše between ve výpočtu vaší mzdy; není to nijak zvlášť potřeba, protože pokud je plat vyšší než 2000, první PŘÍPAD již byl splněn.




  1. Výukový program ORACLE SQL*Plus

  2. Aktualizace databázového pole Chyba CodeIgniter

  3. MySQL - Duplicitní tabulka

  4. Jak mohu spustit a zkontrolovat svůj protokol MySQL?