Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Клаузула Group By | Групування
Practice
Projects
Quizzes & Challenges
Quizzes
Challenges
/
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

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Перейдіть на комп'ютер для реальної практикиПродовжуйте з того місця, де ви зупинились, використовуючи один з наведених нижче варіантів
Все було зрозуміло?

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

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

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

single

some-alt