ROW_NUMBER — уникальный номер каждой строке (1,2,3,4). RANK — одинаковый ранг для равных, пропускает (1,2,2,4). DENSE_RANK — одинаковый ранг для равных, не пропускает (1,2,2,3).
PostgreSQL: PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY x). Где нет — через NTILE(2) + AVG или трюк с ROW_NUMBER + COUNT OVER и взятие 1-2 средних значений.
NTILE(N) делит данные на N равных групп. NTILE(4) — квартили (25%, 50%, 75%, 100%). NTILE(10) — децили. Используется для RFM-сегментации, percentile-buckets.
CTE: ROW_NUMBER() OVER (PARTITION BY group ORDER BY metric DESC) AS rn → WHERE rn <= 3.
Агрегации · JOIN-запросы · Оконные функции · CTE (Common Table Expressions) · Подзапросы · Работа с датами · Строковые функции · Условная логика
Открыть весь SQL-тренажёр (521 задач) →