Зміст курсу
Розширений Рівень SQL
Розширений Рівень SQL
GROUP BY
Привіт! Ласкаво просимо на курс Проміжний SQL!
У першій секції ми поглиблюємося в тему групування та агрегування даних у наших таблицях.
Давайте зрозуміємо, що означає "групування даних", на простому прикладі таблиці працівників:
Тепер давайте уявимо, що у нас є завдання "визначити кількість працівників в кожному департаменті." Для цього ми згрупуємо дані за стовпцем department
і використаємо агрегацію за допомогою функції COUNT(*)
.
Ось як це буде виглядати на практиці:
SELECT department, COUNT(*) AS number_of_employees FROM employees GROUP BY department
Отже, як ви можете побачити, синтаксис для групування даних виглядає так:
Примітka
AGG_FUNC
означає агрегатні функції на кшталт MAX
, MIN
, COUNT
тощо.
Цей синтаксис існує для пошуку певних значень за допомогою агрегатних функцій у специфічних колонках.
Розгляньмо інший приклад: наше завдання полягає в знаходженні відділу з найвищою середньою зарплатою.
Щоб отримати такі дані, нам потрібно групувати дані за колонкою department
та потім використати функцію AVG()
, щоб розрахувати середню зарплату:
SELECT department, AVG(salary) as average_salary FROM employees GROUP BY department
Примітка
Зверніть увагу, що ми не будемо використовувати цю таблицю в завданнях; таблиця
employees
буде використовуватися виключно для демонстрації прикладів синтаксису та їх застосування.
У цьому курсі ми будемо працювати з базою даних системи монреальського метро, яка містить таблицю metro_travel_time
.
Ця таблиця міститиме інформацію про лінію станції(line_name
), її назву(station_name
), та кількість часу, який потрібен поїзду для подорожі від однієї станції до наступної(time_to_next_station
).
Ось як виглядає ця таблиця та попередній перегляд даних у ній:
Як ви можете бачити, це не складна таблиця. Давайте подумаємо, де ми можемо застосувати групування тут.
Найочевидніший варіант - це групування за кольорами ліній метро. Це означає, що ми можемо агрегувати дані, групуючи їх за кольором лінії метро.
Тепер давайте попрактикуємось у групуванні, виконуючи завдання.
Swipe to show code editor
Ваше завдання - знайти найдовший час до наступної станції на кожній лінії. Це дозволить нам визначити найдовший час у дорозі між станціями на кожній лінії метро. Для цього використовуйте функцію MAX()
і дайте їй псевдонім max_time
, групуючи дані за стовпцем line_name
.
Як тільки ви виконаєте це завдання, натисніть кнопку нижче коду, щоб перевірити своє рішення.
Дякуємо за ваш відгук!
GROUP BY
Привіт! Ласкаво просимо на курс Проміжний SQL!
У першій секції ми поглиблюємося в тему групування та агрегування даних у наших таблицях.
Давайте зрозуміємо, що означає "групування даних", на простому прикладі таблиці працівників:
Тепер давайте уявимо, що у нас є завдання "визначити кількість працівників в кожному департаменті." Для цього ми згрупуємо дані за стовпцем department
і використаємо агрегацію за допомогою функції COUNT(*)
.
Ось як це буде виглядати на практиці:
SELECT department, COUNT(*) AS number_of_employees FROM employees GROUP BY department
Отже, як ви можете побачити, синтаксис для групування даних виглядає так:
Примітka
AGG_FUNC
означає агрегатні функції на кшталт MAX
, MIN
, COUNT
тощо.
Цей синтаксис існує для пошуку певних значень за допомогою агрегатних функцій у специфічних колонках.
Розгляньмо інший приклад: наше завдання полягає в знаходженні відділу з найвищою середньою зарплатою.
Щоб отримати такі дані, нам потрібно групувати дані за колонкою department
та потім використати функцію AVG()
, щоб розрахувати середню зарплату:
SELECT department, AVG(salary) as average_salary FROM employees GROUP BY department
Примітка
Зверніть увагу, що ми не будемо використовувати цю таблицю в завданнях; таблиця
employees
буде використовуватися виключно для демонстрації прикладів синтаксису та їх застосування.
У цьому курсі ми будемо працювати з базою даних системи монреальського метро, яка містить таблицю metro_travel_time
.
Ця таблиця міститиме інформацію про лінію станції(line_name
), її назву(station_name
), та кількість часу, який потрібен поїзду для подорожі від однієї станції до наступної(time_to_next_station
).
Ось як виглядає ця таблиця та попередній перегляд даних у ній:
Як ви можете бачити, це не складна таблиця. Давайте подумаємо, де ми можемо застосувати групування тут.
Найочевидніший варіант - це групування за кольорами ліній метро. Це означає, що ми можемо агрегувати дані, групуючи їх за кольором лінії метро.
Тепер давайте попрактикуємось у групуванні, виконуючи завдання.
Swipe to show code editor
Ваше завдання - знайти найдовший час до наступної станції на кожній лінії. Це дозволить нам визначити найдовший час у дорозі між станціями на кожній лінії метро. Для цього використовуйте функцію MAX()
і дайте їй псевдонім max_time
, групуючи дані за стовпцем line_name
.
Як тільки ви виконаєте це завдання, натисніть кнопку нижче коду, щоб перевірити своє рішення.
Дякуємо за ваш відгук!