sql >> Database teknologi >  >> RDS >> Oracle

Anvend COUNT-funktionen på en undergruppe af grupper

Nej, intet behov for analytiske funktioner; de er alligevel svære at have i den samme forespørgsel som en samlet funktion.

Du leder efter case sætning igen, du skal bare sætte den i 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

Bemærk, at jeg har ændret dit count(case when...) til sum() . Dette skyldes, at du bruger en boolsk 1/0, så det vil fungere på samme måde, men det er meget renere.

Af samme grund har jeg ignoreret dit between i din lønberegning; der er ikke noget særligt behov for det, som om lønnen er større end 2000, er den første CASE allerede blevet opfyldt.




  1. Oracle til PostgreSQL:Grunde til at migrere

  2. Hvordan opdeles forespurgte data efter afgrænsning i Oracle?

  3. Heroku psql:FATAL:resterende forbindelsespladser er reserveret til ikke-replikering af superbrugerforbindelser

  4. XAMPP VIRKER IKKE! - OS X Yosemite