Продвинутые SQL-запросы

Теория: Common Table Expression и Конструкция WITH

Конструкция Common Table Expressions (CTE) создает именованную временную таблицу, которая может быть использована в подзапросах, объединениях, агрегатных функциях и других операциях.

Преимущество использования CTE заключается в возможности переиспользования подзапросов и создании более читаемого и удобного для понимания кода.

Предположим, у нас есть таблица с продажами товаров и таблица с покупателями

sales

customer_idproduct_idsale_datequantitytotal_price
110928473'2023-03-08'128499.99
220483739'2023-03-09'29998.00
373648393'2023-03-10'33297.00

customers

idname
1John Doe
2Jane Smith
3...

Мы можем использовать CTE, например, для определения временной таблицы top_customers, которая содержит информацию о топ-5 клиентах по количеству сделанных заказов:

WITH top_customers AS (
    SELECT
        customer_id,
        COUNT(*) AS order_count
    FROM sales
    GROUP BY customer_id
    ORDER BY order_count DESC
    LIMIT 5
)

SELECT
    c.id,
    c.name,
    tc.order_count
FROM customers AS c
INNER JOIN top_customers AS tc ON c.id = tc.customer_id;

top_customers

idnameorder_count
1John Doe6
2Jane Smith6
4Sarah Miller5
5Robert Brown5
10Susan Davis5

Таблица на DB Fiddle

CTE позволяет создавать более читаемый и структурированный код, а также улучшает производительность запросов, так как подзапросы могут быть выполнены только один раз и результаты могут быть переиспользованы.

Рекомендуемые программы

Завершено

0 / 6