У меня есть простое представление в моей базе данных MSSQL.Он состоит из следующих полей:
report_id INT
ym VARCHAR -- YYYY-MM
keyword VARCHAR(MAX)
visits INT
Я легко могу получить 10 самых популярных запросов по ключевым словам с помощью следующего запроса:
SELECT TOP 10 *
FROM top_keywords
WHERE ym BETWEEN '2010-05' AND '2010-05'
ORDER BY visits DESC
Теперь, где это сложно, я должен получитьпервые 10 записей для каждого report_id
в заданном диапазоне дат (ym BETWEEN @start_date AND @end_date
).
Как мне получить топ-10 для каждого report_id?Я сталкивался с предложениями, касающимися использования ROW_NUMBER () и RANK (), но их реализация не принесла больших результатов.