меня попросили написать запрос, который должен ранжировать клиентов по количеству заказов, которые у них есть. Основным важным фактором является то, что если два клиента были заказаны в одинаковом количестве, они должны иметь одинаковый ранг. Я хочу знать, как обработать этот запрос. для этого я начал как показано ниже:
select tble1.customerid, RANK() OVER (ORDER BY tble1.counts desc) AS [cust grade] from
(select Orders.CustomerID, COUNT(*) as counts from Orders
group by CustomerID order by counts desc)tble1
как вы упомянули, вывод таблицы должен выглядеть примерно так:
custid1 - некоторые - класс
custid2 - некоторые - класс
проблема кода в том, что он пропускает некоторые числа. это работает хорошо, я имею в виду, если два клиента имеют одинаковое количество заказов, это дает им одинаковую оценку. но это выглядит как очередь последовательных чисел, что, если у нас есть, например, три четверки, следующая оценка после них - 7. Но мне нужно присвоить ей оценку 5. Почему эта функция работает таким образом. как я могу это исправить. если это возможно, кто-нибудь может предложить лучший запрос, который имеет лучшую производительность, я буду очень доволен.