Умовний аналіз

Середній рівень SQL-запитів з AI

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-запитів з AI

Умовні агрегати

Схема умов

Середній рівень SQL-запитів з AI

Умовні агрегати

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

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-запитів з AI

Умовні агрегати

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

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-запитів з AI

Умовні агрегати з 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;
  • NULL потрапляють до films_without_budget
  • Може знадобитися фільтр WHERE
Середній рівень SQL-запитів з AI

Поєднання прийомів

Запит: Для кожного року після 2000-го з щонайменше 5 фільмами, які мають дані про бюджет, віднесіть фільми до High Budget, якщо бюджет понад 1 мільйон, і до Low Budget, якщо 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-запитів з AI

Поза підрахунком

$$

  • Умовні шаблони працюють і з іншими агрегатами

$$

  • Експериментуйте з умовами та порогами

$$

  • Відкривайте приховані інсайти

$$

Відкривайте інсайти

Середній рівень SQL-запитів з AI

Давайте потренуємось!

Середній рівень SQL-запитів з AI

Preparing Video For Download...