Перейти к содержанию

Выражения CASE и условная логика

Начало урока

Выражения CASE и условная логика

Заставьте SQL выбирать значение для каждой строки, категоризировать данные и считать подмножества за один проход

Главная идея: CASE - это if / else языка SQL. Он смотрит на каждую строку, проверяет условия по порядку и возвращает значение для первого истинного условия. Поскольку это выражение, оно даёт значение, которое можно вставить в список SELECT, в ORDER BY, в WHERE и даже внутрь агрегата вроде SUM(), чтобы посчитать именно те строки, которые вам нужны.
К концу этой темы вы сможете:
  • писать простую и поисковую формы CASE,
  • категоризировать строки в метки или диапазоны оценок,
  • применять паттерн условной агрегации (SUM(CASE ... )) для подсчёта подмножеств и построения сводных таблиц,
  • защищаться от деления на ноль с помощью NULLIF,
  • заменять NULL на запасное значение через IFNULL / COALESCE.

0. Пример таблицы

Каждый запрос ниже выполняется над одной небольшой таблицей результатов экзаменов. Некоторые оценки равны NULL, потому что студент отсутствовал, а у одного студента attempts = 0 - оба факта пригодятся позже.

CREATE TABLE students (
  student_id  INT PRIMARY KEY,
  full_name   VARCHAR(50),
  subject     VARCHAR(20),
  score       INT,          -- 0..100, NULL если студент отсутствовал
  attempts    INT
);

INSERT INTO students VALUES
  (1, 'Aida Nurlan',   'Math',    92,   1),
  (2, 'Bekzat Orozov', 'Math',    58,   2),
  (3, 'Chris Doyle',   'Math',    NULL, 0),
  (4, 'Dina Sultan',   'History', 74,   1),
  (5, 'Erlan Kadyr',   'History', 45,   3),
  (6, 'Farida Iman',   'Science', 88,   1),
  (7, 'Gulnara Sadyk', 'Science', 63,   2),
  (8, 'Hasan Umar',    'Science', NULL, 0);

Держите эту таблицу в уме: 8 студентов, 3 предмета, двое отсутствующих (оценки NULL).

Продолжите этот урок на YourAIZone

В полном уроке — объяснение целиком, разобранные примеры, частые ошибки, тесты с мгновенной проверкой и ИИ-репетитор. Начните сразу как гость или создайте аккаунт, чтобы сохранять прогресс.

В полном уроке

  • Объяснение целиком
  • Разобранные примеры
  • Частые ошибки и как их избежать
  • Тестовые вопросы: 15
  • ИИ-репетитор, который отвечает на вопросы по теме
  • Отслеживание прогресса для ученика, родителей и учителя