TGViewer
SQLite на практике SQLite на практике @sqliter · 2.25K subscribers
Post #96 2.77K
SQL-рецепт: Ранжирование строк

Предположим, мы хотим создать рейтинг, в котором позиция каждой записи определяется значением одного или нескольких столбцов.

Решение — использовать функцию rank() поверх SQL-окна, упорядоченного по целевым столбцам.

Пример

Отранжируем сотрудников из таблицы employees по зарплате:

select
rank() over w as "rank",
name, department, salary
from employees
window w as (order by salary desc)
order by "rank", id;


r  sal  name
1 120 Иван
2 104 Леонид
2 104 Марина
4 100 Анна
5 96 Вероника
5 96 Григорий
7 90 Ксения


Функция rank() присваивает каждому сотруднику ранг в соответствии с его зарплатой (order by salary desc).

Обратите внимание, что сотрудники с одинаковой зарплатой получили одинаковые ранги (Леонид и Марина, Вероника и Григорий).

Нюансы

— Можно использовать dense_rank() вместо rank(), чтобы избежать «дыр» в рангах.

— Если СУБД не поддерживает инструкцию window, можно встроить определение окна: rank over (order by ...)

→ Оконные функции SQL
  • 👍 24
More from @sqliter
  1. May 20, 2025fuzzy: Нечеткое сравнение строк в SQLite Расширение nalgeon/fuzzy помогает сравнивать стро…
  2. May 14, 2025fileio: Работа с файлами в SQLite Расширение nalgeon/fileio добавляет в SQLite возможность…
  3. May 10, 2025define: Пользовательские функции в SQLite Как известно, в SQLite нет хранимых процедур. Пр…
  4. May 7, 2025crypto: Хеши, кодирование и декодирование в SQLite Открываю новую серию заметок. В каждом…
  5. Aug 8, 2024Работа с датой и временем в SQLite В sqlite есть встроенные функции для работы с датами, н…
  6. May 8, 2024Современный SQLite: Вычисляемые столбцы Вычисляемые (generated) столбцы рассчитываются на…
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 →