swanrnd
@swanrnd
Издатель HTML5 игр

Как подсчитать количество значений в топе SQL?

Имеется MS SQL таблица.
id, name, rate

Надо взять последние 100 записей по id и узнать, сколько человек с рейтингом 1,2,3,4 всего 25 значение. И все упорядочить по убыванию количества.

BEGIN TRANSACTION;

CREATE TABLE test(Id integer PRIMARY KEY, Name text, rate integer);

INSERT INTO test VALUES(1,'Tom',2);
INSERT INTO test VALUES(2,'Lucy',4);
INSERT INTO test VALUES(3,'Frank',5);
INSERT INTO test VALUES(4,'Jane',5);
INSERT INTO test VALUES(5,'Julia', 2);
INSERT INTO test VALUES(6,'Helena', 3);
INSERT INTO test VALUES(7,'Sarah', 2);
COMMIT; 

SELECT * FROM test;


Пример ответа:
rate, count
2, 3
5, 2
3, 1
4, 1

..

Интересует простой, но производительный вариант.
  • Вопрос задан
  • 2533 просмотра
Решения вопроса 2
Fadmin
@Fadmin
Как то так:
SELECT [Id]
      ,[Name]
      ,[rate] from (SELECT top 100 [Id]
      ,[Name]
      ,[rate]
  FROM [dbo].[test] order by [Id] desc) x order by rate desc
Ответ написан
@plasticmirror
select rate, count(1) from (
   select top 25 rate from test order by id desc ) T 
group by rate
order by count(1) desc
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы