Клаузула Group By
Ласкаво просимо до курсу Intermediate SQL!
У першому розділі ми розглянемо, як можна групувати та агрегувати дані у наших таблицях.
Давайте розберемося, що означає "групування даних" на простому прикладі таблиці співробітників:
Групування даних
Маємо завдання — дізнатися кількість співробітників у кожному відділі. Для цього згрупуємо дані за стовпцем department
та використаємо агрегацію з функцією COUNT(*)
.
Ось як виглядатиме реалізація:
123SELECT department, COUNT(*) AS number_of_employees FROM employees GROUP BY department
Отже, як бачите, синтаксис для групування даних виглядає так:
SELECT column1, AGG_FUNC(column2)
FROM table
GROUP BY column1
Примітка
AGG_FUNC
означає агрегатні функції, такі якMAX
,MIN
,COUNT
тощо.
Цей синтаксис використовується для пошуку певних значень за допомогою агрегатних функцій у конкретних стовпцях.
Розглянемо ще один приклад: нам доручено знайти відділ з найвищою середньою заробітною платою.
Щоб отримати такі дані, потрібно згрупувати дані за стовпцем department
, а потім використати функцію AVG()
для обчислення середньої заробітної плати:
123SELECT department, AVG(salary) as average_salary FROM employees GROUP BY department
У цій частині розділу ми будемо працювати з базою даних Монреальського метрополітену, яка містить таблицю metro_travel_time
.
Ця таблиця міститиме інформацію про лінію станції (line_name
), її назву (station_name
) та час, необхідний поїзду для подорожі від однієї станції до наступної (time_to_next_station
).
Ось як виглядає ця таблиця та попередній перегляд даних у ній:
Як бачите, це не складна таблиця. Подумаймо, де тут можна застосувати групування.
Найочевидніший варіант — групування за кольорами ліній метро. Це означає, що ми можемо агрегувати дані, групуючи їх за кольором лінії метро.
Псевдонім
У завданнях ви часто будете використовувати поняття псевдоніма. Псевдонім — це, по суті, "прізвисько" для стовпця, який ви отримуєте за допомогою оператора SELECT
. Він задається за такою схемою:
SELECT column AS alias
Псевдонім впливає лише на те, як стовпець відображається у відповіді.
Наприклад, замість MAX(time)
стовпець може називатися max_time
, якщо ви призначите йому такий псевдонім. Це робить результат більш зрозумілим і читабельним.
Swipe to start coding
Ваше завдання — знайти найдовший час до наступної станції на кожній лінії. Це дозволить визначити найдовший час у дорозі між станціями для кожної лінії метро. Для цього використайте функцію MAX()
і задайте їй псевдонім max_time
, згрупувавши дані за стовпцем line_name
.
Коротка інструкція
- Отримайте стовпець
line_name
та максимальне значення стовпцяtime_to_next_station
. - Додайте псевдонім
max_time
для максимального значення. - Згрупуйте дані за стовпцем
line_name
.
Після виконання цього завдання натисніть кнопку під кодом, щоб перевірити своє рішення.
Рішення
Дякуємо за ваш відгук!
single
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат
Can you explain more about aggregate functions in SQL?
How does the GROUP BY clause work with multiple columns?
Can you give more examples of using aliases in SQL queries?
Awesome!
Completion rate improved to 4
Клаузула Group By
Свайпніть щоб показати меню
Ласкаво просимо до курсу Intermediate SQL!
У першому розділі ми розглянемо, як можна групувати та агрегувати дані у наших таблицях.
Давайте розберемося, що означає "групування даних" на простому прикладі таблиці співробітників:
Групування даних
Маємо завдання — дізнатися кількість співробітників у кожному відділі. Для цього згрупуємо дані за стовпцем department
та використаємо агрегацію з функцією COUNT(*)
.
Ось як виглядатиме реалізація:
123SELECT department, COUNT(*) AS number_of_employees FROM employees GROUP BY department
Отже, як бачите, синтаксис для групування даних виглядає так:
SELECT column1, AGG_FUNC(column2)
FROM table
GROUP BY column1
Примітка
AGG_FUNC
означає агрегатні функції, такі якMAX
,MIN
,COUNT
тощо.
Цей синтаксис використовується для пошуку певних значень за допомогою агрегатних функцій у конкретних стовпцях.
Розглянемо ще один приклад: нам доручено знайти відділ з найвищою середньою заробітною платою.
Щоб отримати такі дані, потрібно згрупувати дані за стовпцем department
, а потім використати функцію AVG()
для обчислення середньої заробітної плати:
123SELECT department, AVG(salary) as average_salary FROM employees GROUP BY department
У цій частині розділу ми будемо працювати з базою даних Монреальського метрополітену, яка містить таблицю metro_travel_time
.
Ця таблиця міститиме інформацію про лінію станції (line_name
), її назву (station_name
) та час, необхідний поїзду для подорожі від однієї станції до наступної (time_to_next_station
).
Ось як виглядає ця таблиця та попередній перегляд даних у ній:
Як бачите, це не складна таблиця. Подумаймо, де тут можна застосувати групування.
Найочевидніший варіант — групування за кольорами ліній метро. Це означає, що ми можемо агрегувати дані, групуючи їх за кольором лінії метро.
Псевдонім
У завданнях ви часто будете використовувати поняття псевдоніма. Псевдонім — це, по суті, "прізвисько" для стовпця, який ви отримуєте за допомогою оператора SELECT
. Він задається за такою схемою:
SELECT column AS alias
Псевдонім впливає лише на те, як стовпець відображається у відповіді.
Наприклад, замість MAX(time)
стовпець може називатися max_time
, якщо ви призначите йому такий псевдонім. Це робить результат більш зрозумілим і читабельним.
Swipe to start coding
Ваше завдання — знайти найдовший час до наступної станції на кожній лінії. Це дозволить визначити найдовший час у дорозі між станціями для кожної лінії метро. Для цього використайте функцію MAX()
і задайте їй псевдонім max_time
, згрупувавши дані за стовпцем line_name
.
Коротка інструкція
- Отримайте стовпець
line_name
та максимальне значення стовпцяtime_to_next_station
. - Додайте псевдонім
max_time
для максимального значення. - Згрупуйте дані за стовпцем
line_name
.
Після виконання цього завдання натисніть кнопку під кодом, щоб перевірити своє рішення.
Рішення
Дякуємо за ваш відгук!
Awesome!
Completion rate improved to 4single