sql >> Databasteknik >  >> RDS >> Oracle

Hur summa med case-villkorssats fungerar i sql

Förmodligen är detta den del du kämpar för att förstå:

  select deptno,
         sum(case when jobname = 'Analyst' then 1 else 0 end) as numAnalysts
  from employees
  group by deptno

Detta är egentligen en enkel aggregeringsfråga. Vad frågan gör är:

  • Titta på varje rad i employees
  • Om jobname är 'Analyst' tilldela sedan värdet 1 (detta är case uttalande. Otherwise, assign a value of 0`.
  • Aggregera efter avdelning, summera det nyss beräknade värdet. Detta har till följd att antalet analytiker räknas.

case är ett uttryck som returnerar ett värde. sum() är helt enkelt att lägga ihop det värdet för varje grupp.



  1. hur man automatiskt justerar cellbredd i fpdf med php och mysql

  2. Vad är snabbare, VÄLJ DISTINCT eller GROUP BY i MySQL?

  3. Påverkar ordningsföljden av tabeller i raka kopplingar, utan antydningsdirektiv, prestanda?

  4. Android-datahämtning från databasen fungerar inte (php + json + mysql)