Комплексное аналитическое ранжирование с несколькими критериями
Комплексное аналитическое ранжирование с несколькими критериями в SQL позволяет упорядочить данные по нескольким столбцам или критериям. Это может быть полезно в различных ситуациях, таких как создание отчетов, анализ производительности или создание рейтингов.
Для выполнения комплексного ранжирования вы можете использовать функцию RANK()
или другие оконные функции вместе с несколькими критериями в части ORDER BY
в окне. Вот несколько примеров, как это можно сделать:
Пример 1: Ранжирование сотрудников по зарплате и стажу
Рассмотрим таблицу employees
с полями employee_id
, department
, salary
, и hire_date
. Мы хотим ранжировать сотрудников в каждом отделе сначала по зарплате, а затем по стажу работы (новее сотрудники получают более высокий ранг).
Запрос:
PARTITION BY department
: Делит данные на группы по отделам.ORDER BY salary DESC, hire_date ASC
: Сначала упорядочивает сотрудников по зарплате в порядке убывания, затем по дате найма в порядке возрастания.
Результат: В каждом отделе сотрудники будут ранжированы сначала по зарплате, а затем, если зарплата одинаковая, по стажу.
Пример 2: Ранжирование студентов по среднему баллу и количеству курсов
Рассмотрим таблицу students
с полями student_id
, average_grade
, и courses_count
. Мы хотим ранжировать студентов по среднему баллу, а затем по количеству курсов, если средний балл одинаковый.
Запрос:
ORDER BY average_grade DESC, courses_count DESC
: Сначала упорядочивает студентов по среднему баллу в порядке убывания, затем по количеству курсов в порядке убывания.
Результат: Студенты будут ранжированы сначала по среднему баллу, а затем, если баллы одинаковы, по количеству курсов.
Пример 3: Ранжирование продаж по региону и времени
Рассмотрим таблицу sales
с полями region
, sale_date
, и amount
. Мы хотим ранжировать продажи по региону, а внутри региона — по сумме продаж за каждый день.
Запрос:
PARTITION BY region
: Делит данные на группы по регионам.ORDER BY sale_date ASC, amount DESC
: Сначала упорядочивает продажи по дате в порядке возрастания, затем по сумме продаж в порядке убывания.
Результат: Продажи будут ранжированы по регионам, затем по дате, и в рамках одной даты — по сумме продаж.
Пример 4: Ранжирование продуктов по рейтингу и продажам
Рассмотрим таблицу products
с полями product_id
, rating
, и sales
. Мы хотим ранжировать продукты по рейтингу, а затем по продажам, если рейтинг одинаковый.
Запрос:
ORDER BY rating DESC, sales DESC
: Сначала упорядочивает продукты по рейтингу в порядке убывания, затем по продажам в порядке убывания.
Результат: Продукты будут ранжированы сначала по рейтингу, а затем, если рейтинг одинаковый, по продажам.
Заключение
Комплексное аналитическое ранжирование с несколькими критериями позволяет выполнять более детализированный анализ данных. Использование оконных функций с несколькими критериями в ORDER BY
позволяет учитывать несколько факторов при вычислении рангов, что помогает создавать более точные и информативные отчеты и анализы.
Last updated