Фильтрация сгруппированных данных

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

Jasmin Ludolf

Senior Data Science Content Developer

WHERE или HAVING

На каких языках снято более 20 фильмов?

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

 

WHERE

  • Отдельные строки
  • Какие конкретные фильмы соответствуют условию?

$$

$$

$$

HAVING

  • Сгруппированные результаты
  • Какие группы соответствуют условию?
Средний уровень SQL-запросов с ИИ

Фильтрация сгруппированных данных

Запрос: На каких языках снято более 20 фильмов?

SELECT language, COUNT(*) AS lang_count
FROM films
GROUP BY language
HAVING COUNT(*) > 20;
|language|
|--------|
|Mandarin|
|Spanish |
|French  |
|Hindi   |
|English |

$$

  • Фильтрует после:
    • Группировки
    • Агрегации
    • Когда результаты подсчёта доступны
Средний уровень SQL-запросов с ИИ

Запросы для фильтрации групп

Запрос: Названия фильмов и бюджеты с бюджетом выше 5 миллионов

SELECT title, budget
FROM films
WHERE budget > 5000000;
|title          |budget |
|---------------|-------|
|Metropolis     |6000000|
|Duel in the Sun|8000000|
|Quo Vadis      |7623000|
|West Side Story|6000000|
...

Запрос: Языки и бюджет со средним бюджетом выше 5 миллионов (округлённым)

SELECT language, ROUND(AVG(budget)) AS avg_budget
FROM films
GROUP BY language
HAVING ROUND(AVG(budget)) > 5000000;
|language|avg_budget|
|--------|----------|
|Danish  |16700000  |
|None    |8250000   |
|Tamil   |150000000 |
...
Средний уровень SQL-запросов с ИИ

Комбинирование фильтров

Запрос: Показать языки с более чем 5 фильмами начиная с 2000 года, где средняя продолжительность превышает 80

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

Комбинирование фильтров

Запрос: Показать языки с более чем 5 фильмами начиная с 2000 года, где средняя продолжительность превышает 80

SELECT language, COUNT(*) AS film_count, ROUND(AVG(duration)) AS average_duration
FROM films

WHERE release_year >= 2000
GROUP BY language
Средний уровень SQL-запросов с ИИ

Комбинирование фильтров

Запрос: Показать языки с более чем 5 фильмами начиная с 2000 года, где средняя продолжительность превышает 80

SELECT language, COUNT(*) AS film_count, ROUND(AVG(duration)) AS average_duration
FROM films
WHERE release_year >= 2000
GROUP BY language

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

Комбинирование фильтров

Запрос: Показать языки с более чем 5 фильмами начиная с 2000 года, где средняя продолжительность превышает 80

SELECT language, COUNT(*) AS film_count, ROUND(AVG(duration)) AS average_duration
FROM films
WHERE release_year >= 2000
GROUP BY language

HAVING COUNT(*) > 5 AND ROUND(AVG(duration)) > 80;
|language|film_count|average_duration|
|--------|----------|----------------|
|Mandarin|26        |112             |
|Japanese|10        |114             |
|Spanish |37        |107             |
...
Средний уровень SQL-запросов с ИИ

Порядок выполнения операций

$$

FROM

Конвейерная лента

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

Порядок выполнения операций

$$

FROMWHERE

Конвейерная лента

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

Порядок выполнения операций

$$

FROMWHEREGROUP BY (и агрегация) ➝

Конвейерная лента

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

Порядок выполнения операций

$$

FROMWHEREGROUP BY (и агрегация) ➝ HAVING

Конвейерная лента

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

Порядок выполнения операций

$$

FROMWHEREGROUP BY (и агрегация) ➝ HAVINGSELECT

Конвейерная лента

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

Порядок выполнения операций

$$

FROMWHEREGROUP BY (и агрегация) ➝ HAVINGSELECTORDER BY

Конвейерная лента

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

Порядок выполнения операций

$$

FROMWHEREGROUP BY (и агрегация) ➝ HAVINGSELECTORDER BYLIMIT

Конвейерная лента

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

Запросы для фильтрации

Оба варианта: Фильмы с 2000 года, где средняя продолжительность превышает 80

WHERE: Отдельные записи

  • Названия фильмов, вышедших после 2024 года
  • Бюджеты выше 5 миллионов

HAVING: Упоминает агрегат

  • Языки со средним бюджетом более 10 000
  • Количество фильмов больше 5

Ручка на бумаге

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

Итеративные запросы

$$

1) Начинайте с малого

2) Проверяйте результаты

3) Уточняйте запрос, добавляя детали

4) Повторяйте!

3D-иллюстрация с диалоговыми пузырями: один с надписью AI, другой с многоточием

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

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

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

Preparing Video For Download...