>_ IzzyLab

Практическое задание

PostgreSQL: оконная функция RANK

средне

В базе shop для каждого заказа выведи имя|сумма|ранг, где ранг — позиция заказа по убыванию суммы (RANK()). Результат — по убыванию суммы в /root/ranked.txt.

Что потренируешь:
  • оконные функции
  • rank
  • over
  • postgresql
  • psql

Разбор темы

Оконные функции считают значение поверх набора строк, не схлопывая их: в отличие от GROUP BY, где исходные строки исчезают, здесь каждая строка сохраняется, но получает вычисленную характеристику. Ранжирующие функции присваивают строке позицию в упорядоченном наборе, а конструкция OVER (...) описывает окно — по какому порядку вести отсчёт. Стоит помнить, что при совпадении значений разные ранжирующие функции ведут себя по-разному: одни повторяют ранг и делают пропуск, другие нумеруют подряд. Сортировка внутри окна и ORDER BY для порядка вывода — независимые вещи.

Что проверяется

  1. ранги по убыванию суммы верны

Как это выглядит