Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
GROUP BY | Групування
Розширений Рівень SQL
course content

Зміст курсу

Розширений Рівень SQL

Розширений Рівень SQL

1. Групування
2. Вкладені Запити
3. Об'єднання Таблиць
4. DDL та DML в SQL

book
GROUP BY

Привіт! Ласкаво просимо на курс Проміжний SQL!

У першій секції ми поглиблюємося в тему групування та агрегування даних у наших таблицях.

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

Тепер давайте уявимо, що у нас є завдання "визначити кількість працівників в кожному департаменті." Для цього ми згрупуємо дані за стовпцем department і використаємо агрегацію за допомогою функції COUNT(*).

Ось як це буде виглядати на практиці:

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

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

Примітka

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

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

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

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

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

Примітка

Зверніть увагу, що ми не будемо використовувати цю таблицю в завданнях; таблиця employees буде використовуватися виключно для демонстрації прикладів синтаксису та їх застосування.

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

Ця таблиця міститиме інформацію про лінію станції(line_name), її назву(station_name), та кількість часу, який потрібен поїзду для подорожі від однієї станції до наступної(time_to_next_station).

Ось як виглядає ця таблиця та попередній перегляд даних у ній:

Як ви можете бачити, це не складна таблиця. Давайте подумаємо, де ми можемо застосувати групування тут.

Найочевидніший варіант - це групування за кольорами ліній метро. Це означає, що ми можемо агрегувати дані, групуючи їх за кольором лінії метро.

Тепер давайте попрактикуємось у групуванні, виконуючи завдання.

Завдання
test

Swipe to show code editor

Ваше завдання - знайти найдовший час до наступної станції на кожній лінії. Це дозволить нам визначити найдовший час у дорозі між станціями на кожній лінії метро. Для цього використовуйте функцію MAX() і дайте їй псевдонім max_time, групуючи дані за стовпцем line_name.

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

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

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

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

Секція 1. Розділ 1
toggle bottom row

book
GROUP BY

Привіт! Ласкаво просимо на курс Проміжний SQL!

У першій секції ми поглиблюємося в тему групування та агрегування даних у наших таблицях.

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

Тепер давайте уявимо, що у нас є завдання "визначити кількість працівників в кожному департаменті." Для цього ми згрупуємо дані за стовпцем department і використаємо агрегацію за допомогою функції COUNT(*).

Ось як це буде виглядати на практиці:

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

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

Примітka

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

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

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

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

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

Примітка

Зверніть увагу, що ми не будемо використовувати цю таблицю в завданнях; таблиця employees буде використовуватися виключно для демонстрації прикладів синтаксису та їх застосування.

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

Ця таблиця міститиме інформацію про лінію станції(line_name), її назву(station_name), та кількість часу, який потрібен поїзду для подорожі від однієї станції до наступної(time_to_next_station).

Ось як виглядає ця таблиця та попередній перегляд даних у ній:

Як ви можете бачити, це не складна таблиця. Давайте подумаємо, де ми можемо застосувати групування тут.

Найочевидніший варіант - це групування за кольорами ліній метро. Це означає, що ми можемо агрегувати дані, групуючи їх за кольором лінії метро.

Тепер давайте попрактикуємось у групуванні, виконуючи завдання.

Завдання
test

Swipe to show code editor

Ваше завдання - знайти найдовший час до наступної станції на кожній лінії. Це дозволить нам визначити найдовший час у дорозі між станціями на кожній лінії метро. Для цього використовуйте функцію MAX() і дайте їй псевдонім max_time, групуючи дані за стовпцем line_name.

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

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

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

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

Секція 1. Розділ 1
Switch to desktopПерейдіть на комп'ютер для реальної практикиПродовжуйте з того місця, де ви зупинились, використовуючи один з наведених нижче варіантів
We're sorry to hear that something went wrong. What happened?
some-alt