Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Клаузула Group By | Групування
Розширений Рівень SQL

bookКлаузула Group By

Ласкаво просимо до курсу Intermediate SQL!

У першому розділі ми розглянемо, як можна групувати та агрегувати дані у наших таблицях.

Давайте розберемося, що означає "групування даних" на простому прикладі таблиці співробітників:

Групування даних

Маємо завданнядізнатися кількість співробітників у кожному відділі. Для цього згрупуємо дані за стовпцем department та використаємо агрегацію з функцією COUNT(*).

Ось як виглядатиме реалізація:

123
SELECT department, COUNT(*) AS number_of_employees FROM employees GROUP BY department
copy

Отже, як бачите, синтаксис для групування даних виглядає так:

SELECT column1, AGG_FUNC(column2)
FROM table
GROUP BY column1

Примітка

AGG_FUNC означає агрегатні функції, такі як MAX, MIN, COUNT тощо.

Цей синтаксис використовується для пошуку певних значень за допомогою агрегатних функцій у конкретних стовпцях.

Розглянемо ще один приклад: нам доручено знайти відділ з найвищою середньою заробітною платою.

Щоб отримати такі дані, потрібно згрупувати дані за стовпцем department, а потім використати функцію AVG() для обчислення середньої заробітної плати:

123
SELECT department, AVG(salary) as average_salary FROM employees GROUP BY department
copy

У цій частині розділу ми будемо працювати з базою даних Монреальського метрополітену, яка містить таблицю 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.

Після виконання цього завдання натисніть кнопку під кодом, щоб перевірити своє рішення.

Рішення

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 1. Розділ 1
single

single

Запитати АІ

expand

Запитати АІ

ChatGPT

Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат

close

Awesome!

Completion rate improved to 4

bookКлаузула Group By

Свайпніть щоб показати меню

Ласкаво просимо до курсу Intermediate SQL!

У першому розділі ми розглянемо, як можна групувати та агрегувати дані у наших таблицях.

Давайте розберемося, що означає "групування даних" на простому прикладі таблиці співробітників:

Групування даних

Маємо завданнядізнатися кількість співробітників у кожному відділі. Для цього згрупуємо дані за стовпцем department та використаємо агрегацію з функцією COUNT(*).

Ось як виглядатиме реалізація:

123
SELECT department, COUNT(*) AS number_of_employees FROM employees GROUP BY department
copy

Отже, як бачите, синтаксис для групування даних виглядає так:

SELECT column1, AGG_FUNC(column2)
FROM table
GROUP BY column1

Примітка

AGG_FUNC означає агрегатні функції, такі як MAX, MIN, COUNT тощо.

Цей синтаксис використовується для пошуку певних значень за допомогою агрегатних функцій у конкретних стовпцях.

Розглянемо ще один приклад: нам доручено знайти відділ з найвищою середньою заробітною платою.

Щоб отримати такі дані, потрібно згрупувати дані за стовпцем department, а потім використати функцію AVG() для обчислення середньої заробітної плати:

123
SELECT department, AVG(salary) as average_salary FROM employees GROUP BY department
copy

У цій частині розділу ми будемо працювати з базою даних Монреальського метрополітену, яка містить таблицю 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.

Після виконання цього завдання натисніть кнопку під кодом, щоб перевірити своє рішення.

Рішення

Switch to desktopПерейдіть на комп'ютер для реальної практикиПродовжуйте з того місця, де ви зупинились, використовуючи один з наведених нижче варіантів
Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

close

Awesome!

Completion rate improved to 4
Секція 1. Розділ 1
single

single

some-alt