TGViewer
LEFT JOIN LEFT JOIN @leftjoin · 41.8K subscribers
Post #868 11.4K
Приоткрывайм завесу тайны: о чём мы пишем в канале FULL JOIN?
Мы решили поделиться с вами частью контента, который мы публикуем в приватном канале. На прошлой неделе мы публиковали статью, в которой разбирались в сути ранжирующих функций в SQL.

Давайте разберемся в каждой из ранжирующих функций
📍 ROW_NUMBER — функция, которая возвращает номер строки внутри окна.
С помощью данной функции можно задать нумерацию, которая будет отличаться от порядка сортировки строк результирующего набора, создать несквозную нумерацию, т.е. выделить группы из общего множества строк и сделать отдельную нумерацию для каждой группы, а также использовать несколько способов нумерации одновременно.

Помимо ROW_NUMBER, есть и другие ранжирующие функции:
📍 RANK — функция, которая возвращает ранг каждой строки.
Погодите, а что такое ранг?
Cтроки, которые имеют одинаковые значения в столбцах, по которым выполняется упорядочивание, получают одинаковые номера - ранги. Нумерация рангов начинается с единицы.
В случае использования RANK следующим номером после строк с одинаковым рангом будет номер строки (ROW_NUMBER).

📍 DENSE_RANK — функция, которая также возвращает ранг каждой строки.
В отличие от RANK, при использовании этой функции следующим номером после строк с одинаковым рангом будет ранг на единицу выше. Таким образом, номера не пропускаются, и потому такой ранг называется “плотным“.

📍 NTILE — функция, которая распределяет строки окна на заданное в качестве параметра количество групп.
Нумерация групп начинается с единицы. Если общее количество строк не делится нацело на заданный параметр, то группы формируются двух размеров с разницей в единицу. Причем группы большего размера идут перед меньшими группами. Например, если общее число строк равно 10, а число групп равно 4, то первые две группы будут состоять из 3 строк, а последние две — из 2.

📍 PERCENT_RANK — функция, которая возвращает относительный ранг строки в окне.
Она вычисляет долю строк, ранг которых меньше, чем у текущей. Для подсчета используется формула (rank - 1) /([количество строк в окне] - 1). Возвращаемое значение лежит в отрезке [0, 1]. Если в окне только одна строка, то функция вернет 0.

📍 CUME_DIST — функция, которая возвращает кумулятивное распределение величины в пределах набора значений.
Она вычисляет долю строк, ранг которых не больше, чем у текущей. Для подсчета используется формула N/[количество строк в окне], где N - количество строк, ранг которых меньше либо равен рангу текущей строки, включая ее саму. Возвращаемое значение лежит в полуинтервале (0, 1].

Круто, а как их использовать?
По-разному. Например, с их помощью можно решить задачу ранжирования пользователей относительно их возраста или даты регистрации.

Если хотите изучить больше пояснений по разным функциям и их использованию, разобрать примеры запросов к конкретным данным, а также получить доступ в нашу Redash песочницу, чтобы запустить запросы со всеми этими функциями и разобрать их «по запчастям», то вы всегда можете оформить подписку на FULL JOIN.
  • 👍 13
  • ❤ 5
  • 🔥 3
More from @leftjoin
  1. Oct 12, 20264 уровня ИИ-осведомленности Еще в апреле Андрей Карпаты (автор термина «вайбкодинг», если…
  2. Oct 9, 2026Anthropic представила Claude Dashboards и Claude Motion И вот опять ИИ отбирает работу у а…
  3. Oct 7, 2026Состоялся релиз Polars 2.0 Polars — Python-библиотека для работы с данными и популярная ал…
  4. Oct 5, 2026Physical AI: следующий этап развития ИИ Рано или поздно ИИ выйдет за пределы интернета в р…
  5. Sep 30, 2026Что было на OpenAI Dev Day? Вообще-то много чего — больше 20 релизов и анонсов. Пройдемся…
  6. Sep 28, 2026В одной ячейке Excel можно будет хранить массивы значений Наконец-то важные новости и не п…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →