Они позволяют применять агрегаты к набору строк, не схлопывая таблицу. Это даёт аналитику прямо в запросах: от кумулятивных сумм до ранжирования.
В этом гайде:
• Средние значения по всей таблице и внутри групп.
• Использование PARTITION BY для сегментации.
• Ранжирование с RANK() и сортировкой.
Этот инструмент часто упрощает логику запросов и снижает нагрузку.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍20🔥8❤5🤝2
This media is not supported in your browser
VIEW IN TELEGRAM
Вместо сухих лекций - интерактивные задания прямо в браузере или приложении. Сразу пишешь запросы, видишь результат и получаешь объяснение ошибок. Подходит как новичкам, так и тем, кто хочет освежить SQL-навыки.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12❤5🔥5🤝2
Топ-N по каждой группе с оконными функциями!
Хотите получить несколько лучших элементов в каждой категории? Это типичная задача аналитики, и решается она с помощью оконных функций.
Создадим таблицу:
Запрос для топ-2 заказов на клиента:
Функция
Пример для клиента с 5 заказами:
🔥 Важно понимать:
➡️ SQL Ready | #практика
Хотите получить несколько лучших элементов в каждой категории? Это типичная задача аналитики, и решается она с помощью оконных функций.
Создадим таблицу:
CREATE TABLE sales (
id INT,
customer VARCHAR(100),
amount DECIMAL(10,2)
);
Запрос для топ-2 заказов на клиента:
SELECT id, customer, amount
FROM (
SELECT id, customer, amount,
ROW_NUMBER() OVER (
PARTITION BY customer
ORDER BY amount DESC
) AS rnk
FROM sales
) t
WHERE rnk <= 2;
Функция
ROW_NUMBER()
нумерует строки внутри каждой группы. Если у клиента есть пять заказов, они сортируются по убыванию суммы, и первые два остаются.Пример для клиента с 5 заказами:
id | customer | amount
-----------------------
12 | Ivanov | 980.00
15 | Ivanov | 750.00
-- остальные (3 строки) отсеялись
🔥 Важно понимать:
ROW_NUMBER()
всегда уникален. Даже если два заказа на одинаковую сумму, один попадёт в выборку, а другой — нет. Если же нужны все одинаковые значения, лучше использовать RANK()
или DENSE_RANK()
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥14👍9❤7
❤12👍10🔥5
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤15👍9🔥5🤝3
This media is not supported in your browser
VIEW IN TELEGRAM
Реальные примеры SQL-запросов, разбор оптимизаций и живые проекты - всё собрано в одном репозитории. Углубляйся в работу с базами данных, учись мыслить как data-профессионал и строй SQL-решения, которые работают.
Оставляю ссылочку: Github📱
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13❤7🔥6🤝1
Нужно определить, в какие часы суток совершается больше всего заказов. Для этого выделим час из даты заказа, и посчитаем количество заказов по каждому часу.
В этом посте:
• EXTRACT(HOUR FROM …) — получаем час из order_date.
• GROUP BY + COUNT — считаем количество заказов в каждом часе.
• ORDER BY — сортируем по убыванию, чтобы увидеть часы максимальной активности.
В итоге получаем часы суток с наибольшим количеством заказов.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16🔥12❤6🤝1