Клаузула Group By
Ласкаво просимо до курсу SQL середнього рівня!
У першому розділі розглядається, як можна групувати та агрегувати дані у таблицях.
Розглянемо, що означає "групування даних" на простому прикладі таблиці співробітників:
Групування даних
Поставлене завдання — визначити кількість співробітників у кожному відділі. Для цього потрібно згрупувати дані за стовпцем department та використати агрегацію з функцією COUNT(*).
Ось як виглядає реалізація:
123SELECT department, COUNT(*) AS number_of_employees FROM employees GROUP BY department
Отже, як видно, синтаксис для групування даних виглядає так:
SELECT column1, AGG_FUNC(column2)
FROM table
GROUP BY column1
AGG_FUNC означає агрегатні функції, такі як MAX, MIN, COUNT тощо.
Цей синтаксис використовується для пошуку певних значень за допомогою агрегатних функцій у конкретних стовпцях.
Розглянемо ще один приклад: нам поставлено завдання знайти відділ з найвищою середньою зарплатою.
Щоб отримати такі дані, потрібно згрупувати дані за стовпцем department, а потім використати функцію AVG() для обчислення середньої зарплати:
123SELECT department, AVG(salary) as average_salary FROM employees GROUP BY department
У цій частині розділу ми працюватимемо з базою даних Монреальського метрополітену, яка містить таблицю 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.
Рішення
Дякуємо за ваш відгук!
single
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат
Чудово!
Completion показник покращився до 4
Клаузула Group By
Свайпніть щоб показати меню
Ласкаво просимо до курсу SQL середнього рівня!
У першому розділі розглядається, як можна групувати та агрегувати дані у таблицях.
Розглянемо, що означає "групування даних" на простому прикладі таблиці співробітників:
Групування даних
Поставлене завдання — визначити кількість співробітників у кожному відділі. Для цього потрібно згрупувати дані за стовпцем department та використати агрегацію з функцією COUNT(*).
Ось як виглядає реалізація:
123SELECT department, COUNT(*) AS number_of_employees FROM employees GROUP BY department
Отже, як видно, синтаксис для групування даних виглядає так:
SELECT column1, AGG_FUNC(column2)
FROM table
GROUP BY column1
AGG_FUNC означає агрегатні функції, такі як MAX, MIN, COUNT тощо.
Цей синтаксис використовується для пошуку певних значень за допомогою агрегатних функцій у конкретних стовпцях.
Розглянемо ще один приклад: нам поставлено завдання знайти відділ з найвищою середньою зарплатою.
Щоб отримати такі дані, потрібно згрупувати дані за стовпцем department, а потім використати функцію AVG() для обчислення середньої зарплати:
123SELECT department, AVG(salary) as average_salary FROM employees GROUP BY department
У цій частині розділу ми працюватимемо з базою даних Монреальського метрополітену, яка містить таблицю 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.
Рішення
Дякуємо за ваш відгук!
single