[[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)