Клаузула Group By
Ласкаво просимо до курсу 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з таблиціmetro_travel_time. - Додайте псевдонім
max_timeдля максимального значення. - Згрупуйте дані за стовпцем
line_name.
Рішення
Дякуємо за ваш відгук!
single
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат
Can you explain more about how GROUP BY works in SQL?
What are some common aggregate functions I can use with GROUP BY?
How do I use aliases in more complex SQL queries?
Чудово!
Completion показник покращився до 4
Клаузула Group By
Свайпніть щоб показати меню
Ласкаво просимо до курсу 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з таблиціmetro_travel_time. - Додайте псевдонім
max_timeдля максимального значення. - Згрупуйте дані за стовпцем
line_name.
Рішення
Дякуємо за ваш відгук!
single