SQL - Group By и Order By

Привет,野心勃勃 SQL энтузиасты! Сегодня мы погрузимся в два необходимых предложения в SQL: Group By и Order By. Как ваш доброжелательный соседний компьютерный учитель, я рад помочь вам в понимании этих концепций. Не беспокойтесь, если вы новички в программировании – мы начнем с основ и постепенно продвинемся дальше. Так что возьмите杯咖啡(или чай, если это ваше дело), и давайте начнем наше приключение с SQL!

SQL - Group By vs Order By

SQL Group By предложение

Что такое Group By?

Предложение Group By resembles полезного организатора для ваших данных. Представьте, что у вас есть messy closet, полный одежды. Group By помогает вам упорядочить эту одежду в аккуратные кучи на основе определенных характеристик – например, цвета или типа одежды.

В терминах SQL, Group By позволяет вам группировать свои данные по одному или нескольким столбцам. Это особенно полезно, когда вы хотите выполнять расчеты или резюмировать эти группы.

Основная структура

Вот основная структура предложения Group By:

SELECT column1, column2, aggregate_function(column3)
FROM table_name
GROUP BY column1, column2;

Давайте разберем это:

  • Мы SELECT столбцы, которые хотим увидеть в нашем результате.
  • Мы указываем, из какой таблицы мы берем данные.
  • Часть GROUP BY говорит SQL, какие столбцы использовать для grouping.

Пример 1: Группировка продаж по продукту

Представим, что у нас есть таблица sales со столбцами: product_name, quantity_sold, и sale_date. Давайте grouped наши продажи по продукту:

SELECT product_name, SUM(quantity_sold) as total_sold
FROM sales
GROUP BY product_name;

Этот запрос покажет нам общее количество проданных товаров для каждого продукта. Вот что происходит:

  1. Мы SELECT product_name и SUM quantity_sold.
  2. Мы берем эти данные FROM нашей таблицы sales.
  3. Мы GROUP BY product_name, так что SQL создаст группу для каждого уникального продукта.

Результат может выглядеть так:

product_name total_sold
Apple 150
Banana 200
Orange 175

Пример 2: Множественная группировка

Мы также можем grouped по нескольким столбцам. Давайте представим, что хотим grouped наши продажи по продукту и дате:

SELECT product_name, sale_date, SUM(quantity_sold) as daily_total
FROM sales
GROUP BY product_name, sale_date;

Этот запрос grouped наши продажи по продукту и дате, показывая нам суточные totals для каждого продукта.

SQL Order By предложение

Что такое Order By?

Если Group By resembles наш шкаф организатор, то Order By resembles как arranging наша одежда от легкой до темной или от shortest до longest. Это все о сортировке наших данных в определенном порядке.

Основная структура

Основная структура предложения Order By следующая:

SELECT column1, column2
FROM table_name
ORDER BY column1 [ASC|DESC], column2 [ASC|DESC];
  • ASC означает ascensional порядок (самый маленький до самого большого, или A до Z).
  • DESC означает descensional порядок (самый большой до самого маленького, или Z до A).
  • Если вы не указываете, SQL assumes ASC по умолчанию.

Пример 3: Сортировка продуктов по продажам

Давайте отсортируем наши продукты по их totality продаж:

SELECT product_name, SUM(quantity_sold) as total_sold
FROM sales
GROUP BY product_name
ORDER BY total_sold DESC;

Этот запрос делает следующее:

  1. Группирует продажи по продукту.
  2. Calculate общее количество проданных товаров для каждого продукта.
  3. Сортирует результаты от самого высокого до самого низкого.

Результат может выглядеть так:

product_name total_sold
Banana 200
Orange 175
Apple 150

Пример 4: Множественная сортировка

Мы также можем сортировать по нескольким столбцам:

SELECT product_name, sale_date, SUM(quantity_sold) as daily_total
FROM sales
GROUP BY product_name, sale_date
ORDER BY product_name ASC, daily_total DESC;

Этот запрос:

  1. Группирует продажи по продукту и дате.
  2. Сортирует сначала по имени продукта (алфавитно).
  3. Затем сортирует по суточному totality (с наибольшего до наименьшего) в каждой группе продуктов.

Group By vs Order By

Теперь, когда мы видели и Group By, и Order By в действии, давайте сравним их:

Feature Group By Order By
Purpose Организует данные в группы Сортирует данные в определенном порядке
Usage Используется с агрегатными функциями Может использоваться с или без агрегатами
Result Уменьшает количество строк (резюмирует) Не изменяет количество строк
Position Comes before ORDER BY в запросе Comes after GROUP BY (если present)
Functionality Создает группы для агрегатных расчетов Определяетsequence output строк

Когда использовать Group By

Используйте Group By, когда вы хотите:

  • Резюмировать данные (например, получать totality или средние значения для каждой группы).
  • Выполнять расчеты на группах данных.
  • Уменьшить количество строк в вашем результирующем наборе.

Когда использовать Order By

Используйте Order By, когда вы хотите:

  • Сортировать свои результаты в определенном порядке ( ascensional или descensional).
  • Представлять данные в более читаемом или логическом порядке.
  • Найти верхние или нижние значения в вашем наборе данных.

Пример 5: Combining Group By и Order By

Давайте объединим все вместе с финальным примером. Представим, что хотим найти top 3 selling продукты для каждого месяца:

SELECT
EXTRACT(MONTH FROM sale_date) as month,
product_name,
SUM(quantity_sold) as total_sold
FROM
sales
GROUP BY
EXTRACT(MONTH FROM sale_date), product_name
ORDER BY
month ASC, total_sold DESC
LIMIT 3;

Этот запрос:

  1. Группирует продажи по месяцу и продукту.
  2. Calculate общее количество проданных товаров для каждого продукта в каждом месяце.
  3. Сортирует результаты по месяцу (ascensional) и затем по totality продаж (descensional).
  4. Ограничивает вывод до top 3 продуктов для каждого месяца.

И вот оно! Мы прошли через земли Group By и Order By. Помните, что практика makes perfect, так что не бойтесь экспериментировать с этими предложениями в своих запросах. Счастливого кодирования на SQL, и пусть ваши данные всегда будут bien-organized и perfectly sorted!

Credits: Image by storyset