[[oktatas:adatbazis-kezeles:mariadb:sql|< SQL]]
====== MariaDB - A case operátor ======
* **Szerző:** Sallai András
* Copyright (c) 2024, Sallai András
* Licenc: [[https://creativecommons.org/licenses/by-sa/4.0/|CC BY-SA 4.0]]
* Web: https://szit.hu
===== Szintaxis =====
CASE value WHEN [összehasonlító_érték] THEN eredmény
[WHEN [összehasonlító_érték] THEN eredmény...] [ELSE eredmény] END
CASE WHEN [feltétel] THEN eredmény
[WHEN [feltétel] THEN eredmény...]
[ELSE eredmény] END
===== Dolgozók példa =====
select * from employees;
+----+--------------+---------+--------+
| id | name | city | salary |
+----+--------------+---------+--------+
| 1 | Para Béla | Szolnok | 342 |
| 2 | Fele Irén | Szeged | 332 |
| 3 | Nora Imre | Szeged | 362 |
| 4 | Szal Katalin | Szolnok | 372 |
| 5 | Endő Lajos | Miskolc | 334 |
| 6 | Tengi Mária | Szolnok | 329 |
| 7 | Csonka Ernő | Miskolc | 392 |
+----+--------------+---------+--------+
* Számoljuk meg a szegedi dolgozókat WHERE direktíva nélkül.
select
sum(case when city='Szeged'
then 1 else 0 end)
as 'Szegedi dolgozók száma'
from employees;
Önmagában nem sok értelme van, hiszen egyszerűbb egy WHERE direktíva használata. Ha viszont, egyszerre szeretném látni hány dolgozó van összesen, és hány van Szegedről:
select
count(*) as 'Dolgozók száma',
sum(case when city='Szeged'
then 1 else 0 end)
as 'Szegedi dolgozók száma'
from employees;
===== Dokumentáció =====
* https://mariadb.com/kb/en/case-operator/ (2024)