У меня есть две версии запроса, и, хотя оба работают, мне любопытно услышать ваше мнение о том, какое из них вы бы предпочли и почему. < /P>
Цель Запросы - получить 3 лучших наиболее запрашиваемых услуг на основе количества запросов для каждого сезона. Для выполнения, cte один взял 1m24s .
Запрос 1: Использование Sub-Query
Код: Выделить всё
SELECT season, service_name, request_count
FROM (
SELECT season, service_name, COUNT(*) AS request_count,
ROW_NUMBER() OVER (PARTITION BY season ORDER BY COUNT(*) DESC) AS row_num
FROM service_requests_clean_v3
GROUP BY season, service_name
) AS ranked_requests
WHERE row_num IN (1,2,3)
ORDER BY season;
Код: Выделить всё
WITH ranked_requests AS (
SELECT season, service_name, COUNT(*) AS request_count
FROM service_requests_clean_v3
GROUP BY season, service_name
),
top_requests AS (
SELECT season, service_name, request_count,
ROW_NUMBER() OVER (PARTITION BY season ORDER BY request_count DESC) AS row_num
FROM ranked_requests
)
SELECT season, service_name, request_count
FROM top_requests
WHERE row_num IN (1,2,3)
ORDER BY season;
С нетерпением жду ваших мнений!
Подробнее здесь: https://stackoverflow.com/questions/794 ... ery-or-cte
Мобильная версия