Как сделать pivot в SQL: подробное объяснение и примеры кода

Для создания сводной таблицы (pivot) в SQL можно использовать операторы PIVOT и UNPIVOT в сочетании с агрегатными функциями. Оператор PIVOT позволяет преобразовать строки в столбцы, а оператор UNPIVOT выполняет обратное преобразование. Вот пример SQL-запроса, который демонстрирует, как сделать pivot в SQL:

    SELECT *
    FROM (
        SELECT category, year, profit
        FROM your_table
    ) AS source
    PIVOT (
        SUM(profit)
        FOR year IN ([2018], [2019], [2020])
    ) AS pivot_table;
    
В этом примере предполагается, что у вас есть таблица your_table с колонками category, year и profit. Запрос сначала выбирает интересующие столбцы, а затем использует оператор PIVOT, чтобы свернуть значения столбца year в разные столбцы с помощью агрегатной функции SUM. Результатом будет сводная таблица с категориями в строках и годами в столбцах. Не забывайте, что синтаксис оператора PIVOT может немного отличаться в различных СУБД. Обратитесь к документации вашей СУБД для получения подробной информации о использовании операторов PIVOT и UNPIVOT.

Детальный ответ

Как сделать pivot в SQL?

Привет! Если ты интересуешься тем, как сделать pivot в SQL, то ты попал по адресу. В этой статье я расскажу тебе, что такое pivot, как его использовать в SQL, и приведу примеры кода. Давай начнем!

Что такое pivot?

Pivot - это операция в SQL, которая позволяет изменять структуру таблицы, переставляя строки в столбцы или столбцы в строки. Она особенно полезна, когда нам нужно преобразовать данные таким образом, чтобы использовать другой агрегат или аналитическую функцию.

Как использовать pivot в SQL?

Чтобы использовать pivot в SQL, мы можем воспользоваться оператором PIVOT. Он позволяет указать, какие столбцы нужно переставить в строки, а какие - в столбцы. Вот общий синтаксис:

SELECT агрегатная_функция(столбец1), [агрегатная_функция(столбец2)], ...
FROM начальная_таблица
PIVOT (
    агрегатная_функция(переставляемое_значение)
    FOR переставляемый_столбец
    IN ([значение1], [значение2], ...)
) AS pivot_table;

Давай разберемся с каждым элементом:

  • агрегатная_функция: это агрегатная функция, которую мы хотим применить к переставляемому значению. Например, SUM, AVG, MAX и т.д.
  • столбец1, столбец2, ...: это столбцы, из которых мы хотим получить значения для применения агрегатной функции. Мы можем указать несколько столбцов через запятую.
  • начальная_таблица: это таблица, из которой мы выбираем данные.
  • агрегатная_функция(переставляемое_значение): это агрегатная функция, которую мы хотим применить к переставляемому значению. Можно использовать одну и ту же или разные агрегатные функции для разных столбцов.
  • переставляемый_столбец: это столбец, значения которого мы хотим переставить в столбцы. Он должен быть числовым или строковым типом данных.
  • значение1, значение2, ...: это значения из переставляемого столбца, которые мы хотим видеть в новых столбцах. Мы можем указать несколько значений через запятую.
  • pivot_table: это имя для новой таблицы, которая будет содержать результаты операции pivot.

Примеры использования pivot в SQL

Для лучшего понимания, давай рассмотрим несколько примеров использования операции pivot в SQL.

Пример 1: Перестановка строк в столбцы

Допустим, у нас есть следующая таблица sales_data:

| country | product | sales |
|---------|---------|-------|
| Russia  | Apple   | 10    |
| Russia  | Orange  | 15    |
| USA     | Apple   | 5     |
| USA     | Orange  | 8     |

Мы хотим перенести значения столбца sales в столбцы Apple и Orange для каждой страны. Можем использовать pivot, чтобы достичь этого:

SELECT country, [Apple], [Orange]
FROM sales_data
PIVOT (
    SUM(sales)
    FOR product
    IN ([Apple], [Orange])
) AS pivot_table;

Результат будет таким:

| country | Apple | Orange |
|---------|-------|--------|
| Russia  | 10    | 15     |
| USA     | 5     | 8      |

Пример 2: Перестановка столбцов в строки

Допустим, у нас есть следующая таблица product_sales:

| product | Russia | USA |
|---------|--------|-----|
| Apple   | 10     | 5   |
| Orange  | 15     | 8   |

Мы хотим перенести значения столбцов Russia и USA в столбец country и столбец sales для каждого продукта. Можно использовать pivot следующим образом:

SELECT product, country, sales
FROM product_sales
PIVOT (
    SUM(sales)
    FOR country
    IN ([Russia], [USA])
) AS pivot_table;

Результат будет таким:

| product | country | sales |
|---------|---------|-------|
| Apple   | Russia  | 10    |
| Apple   | USA     | 5     |
| Orange  | Russia  | 15    |
| Orange  | USA     | 8     |

Заключение

Теперь ты знаешь, как использовать операцию pivot в SQL. Она позволяет перестроить структуру таблицы, чтобы сделать данные более удобными для анализа. Учти, что операция pivot может быть поддерживаема не на всех базах данных, поэтому перед использованием убедись, что она доступна в твоей СУБД.

Надеюсь, данная статья была полезной для тебя. Успехов в изучении SQL и его возможностей!

Видео по теме

Операторы PIVOT и UNPIVOT языка T-SQL - видеокурс «T-SQL. Уровень 3 - Эксперт» - пример видеоурока

Лекция PIVOT MS SQL Server

Урок 4.SQL advanced. Pivot, переворачиваем запрос с группировкой

Похожие статьи:

6 простых шагов: как сделать sql скрипт для базы данных

Как создать связь 1 к 1 в SQL Server

Как сделать пустой запрос в SQL: простой гид для начинающих

Как сделать pivot в SQL: подробное объяснение и примеры кода

Как разрешить удаленные соединения на SQL Server 2012: подробное руководство

Как сделать двойной join в SQL: подробное руководство для начинающих