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

Prerequisites
Передумови

Ласкаво просимо до курсу 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
Note
Примітка

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 з таблиці metro_travel_time.
  • Додайте псевдонім max_time для максимального значення.
  • Згрупуйте дані за стовпцем line_name.

Рішення

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

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

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

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

single

Запитати АІ

expand

Запитати АІ

ChatGPT

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

Suggested prompts:

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?

close

bookКлаузула Group By

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

Prerequisites
Передумови

Ласкаво просимо до курсу 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
Note
Примітка

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 з таблиці metro_travel_time.
  • Додайте псевдонім max_time для максимального значення.
  • Згрупуйте дані за стовпцем line_name.

Рішення

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

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

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

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

single

some-alt