Условный анализ

Средний уровень SQL-запросов с ИИ

Jasmin Ludolf

Senior Data Science Content Developer

Условные агрегаты

Запрос: Показать количество фильмов с бюджетом и без бюджета по каждому году

SELECT 
    release_year,
    COUNT(CASE WHEN budget IS NOT NULL THEN 1 END) AS films_with_budget,
    COUNT(CASE WHEN budget IS NULL THEN 1 END) AS films_without_budget
FROM films
GROUP BY release_year;
|release_year|films_with_budget|films_without_budget|
|------------|-----------------|--------------------|
|1964        |10               |0                   |
|1969        |9                |1                   |
...
Средний уровень SQL-запросов с ИИ

Условные агрегаты

Диаграмма условий

Средний уровень SQL-запросов с ИИ

Условные агрегаты

Запрос: Показать количество фильмов с бюджетом и без бюджета по каждому году

SELECT 
    release_year,
    COUNT(CASE WHEN budget IS NOT NULL THEN 1 END) AS films_with_budget,
    COUNT(CASE WHEN budget IS NULL THEN 1 END) AS films_without_budget
FROM films
GROUP BY release_year;
|release_year|films_with_budget|films_without_budget|
|------------|-----------------|--------------------|
|1964        |10               |0                   |
|1969        |9                |1                   |
...
  • Если фильм соответствует условию, засчитывается 1
Средний уровень SQL-запросов с ИИ

Условные агрегаты

Запрос: Показать количество фильмов с бюджетом и без бюджета по каждому году

SELECT 
    release_year,
    SUM(CASE WHEN budget IS NOT NULL THEN 1 ELSE 0 END) AS films_with_budget,
    SUM(CASE WHEN budget IS NULL THEN 1 ELSE 0 END) AS films_without_budget
FROM  films
GROUP BY release_year;
|release_year|films_with_budget|films_without_budget|
|------------|-----------------|--------------------|
|1964        |10               |0                   |
|1969        |9                |1                   |
...
Средний уровень SQL-запросов с ИИ

Условные агрегаты с NULL

Запрос: Показать количество фильмов с бюджетом и без бюджета по каждому году

SELECT 
    release_year,
    COUNT(CASE WHEN budget IS NOT NULL THEN 1 END) AS films_with_budget,
    COUNT(CASE WHEN budget IS NULL THEN 1 END) AS films_without_budget
FROM films
GROUP BY release_year;
  • NULLs попадают в films_without_budget
  • Может потребоваться фильтрация с WHERE
Средний уровень SQL-запросов с ИИ

Совмещение приёмов

Запрос: Для каждого года после 2000, в котором есть хотя бы 5 фильмов с данными о бюджете, классифицировать фильмы как «Высокий бюджет» (бюджет более 1 миллиона) и «Низкий бюджет» (бюджет 1 миллион и менее), показать количество по каждой категории, упорядочить по году и вывести топ-10

SELECT 
    release_year,

COUNT(CASE WHEN budget > 1000000 THEN 1 END) AS high_budget_count, COUNT(CASE WHEN budget <= 1000000 THEN 1 END) AS low_budget_count
FROM films
WHERE release_year > 2000 AND budget IS NOT NULL
GROUP BY release_year
HAVING COUNT(*) >= 5
ORDER BY release_year LIMIT 10;
Средний уровень SQL-запросов с ИИ

Больше, чем подсчёт

$$

  • Условные шаблоны работают и с другими агрегатами

$$

  • Экспериментируйте с условиями и пороговыми значениями

$$

  • Выявляйте скрытые закономерности

$$

Выявление закономерностей

Средний уровень SQL-запросов с ИИ

Давайте потренируемся!

Средний уровень SQL-запросов с ИИ

Preparing Video For Download...