Иногда нужно посчитать сумму, номер строки или ранг — но без группировки и потери данных. Именно для этого и используется OVER().
Что важно знать:
• Оконные функции считают агрегаты по строкам, не объединяя их — все данные остаются на месте.
• OVER() работает с PARTITION BY — чтобы разбить на группы, и ORDER BY — чтобы задать порядок.
• Это как GROUP BY, только без удаления строк — аналитика поверх полного набора данных.
🔥 — если узнал что-то новое
🤝 — если уже давно используешь
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥11🤝10👍6
Цель — найти всех зарегистрированных пользователей, которые так и не оформили ни одного заказа. Это поможет вернуться к ним с акциями или напоминаниями.
Основные моменты:
• LEFT JOIN — соединяем таблицы, чтобы сохранить всех клиентов, даже тех, у кого нет заказов.
• WHERE o,id IS NULL — отбираем только тех, для кого заказов не найдено.
• SELECT — выводим имя, email и дату регистрации.
🔥 — если попробуешь повторить
🤝 — если уже делал подобное
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥22🤝17👍8❤6
В любой БД вы обязательно встретитесь с даными формата DATETIME или TIMESTAMP, и хорошо знать методы работы с датами и временем. Собрал для вас топ-8 самых популярных операций. Зная
их, вы сможете решать большинство задач, связанных с обработкой дат и времени в своих приложениях.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥26🤝16❤6
EXPLAIN — узнаём, как СУБД реально выполняет ваш запрос!
Команда
Допустим, у нас есть запрос:
Запускаем
Если видим
Чтобы ускорить выполнение, создаём индекс:
🔥 Теперь при повторном EXPLAIN запрос может использовать
➡️ SQL Ready | #практика
Команда
EXPLAIN
показывает, что делает база данных под капотом при выполнении SQL-запроса. Это помогает найти узкие места и понять, почему запрос может работать медленно.Допустим, у нас есть запрос:
SELECT * FROM books WHERE author = 'Толстой';
Запускаем
EXPLAIN
, чтобы посмотреть план выполнения:EXPLAIN SELECT * FROM books WHERE author = 'Толстой';
Если видим
Table Scan
или Seq Scan
— это означает, что происходит полный просмотр таблицы. Такой способ может быть медленным, особенно при большом объёме данных.Чтобы ускорить выполнение, создаём индекс:
CREATE INDEX idx_author ON books(author);
🔥 Теперь при повторном EXPLAIN запрос может использовать
Index Scan
, что значительно быстрее.Please open Telegram to view this post
VIEW IN TELEGRAM
👍19❤8🔥5
Псевдонимы (
alias
) — это не просто временные имена, а мощный инструмент управления структурой и выводом SQL-запросов.Важно запомнить:
• Нужны для агрегаций, оконных функций, CTE и подзапросов.
• Делают код самодокументируемым — особенно в BI и API.
• Облегчают работу с JOIN’ами и повышают читаемость.
🔥 — если узнал что-то новое
🤝 — если уже пользовался
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🤝21🔥14❤6👍2