Порядок выполнения запроса в SQL СУБД выполняет запрос не в том порядке, в каком мы его пишем. На днях споткнулся на том, что оконка считала сумму по-разному с HAVING и без него. Был уверен, что WINDOW функции отрабатывают до HAVING, а оказалось, что нет... Сделал небольшую шпаргалку-напоминалку: 1. FROM & JOIN — берем данные ИЗ... 2. WHERE — ГДЕ (фильтруем строки)... 3. GROUP BY — ГРУППИРУЕМ ПО... 4. Агрегатные функции (SUM, MAX и т.д.) — считаем значения внутри групп 5. HAVING — фильтруем сгруппированные данные 6. Window Functions (SUM(...) OVER(...)) — считаем по имеющемуся набору данных 7. SELECT — выбираем столбцы и присваиваем алиасы. 8. ORDER BY — СОРТИРУЕМ финальный результат. Кстати, поэтому алиасы из SELECT нельзя использовать в WHERE или GROUP BY. На тех этапах база их еще просто «не видит». Единственное место, где они работают — это финальный ORDER BY. Связи: 📌 Сначала понять ЧТО, потом КАК, потом делать ()