SQL选择最常见的记录

Mak*_*Vi. 5 sql sql-server

我有下表:

Table
+----+------+-------+
| ID | Name | Group |
+----+------+-------+
| 0  |   a  |   1   | 
| 1  |   a  |   1   | 
| 2  |   a  |   2   |
| 3  |   a  |   1   |
| 4  |   b  |   1   |
| 5  |   b  |   2   |
| 6  |   b  |   1   |
| 7  |   c  |   2   |
| 8  |   c  |   2   |
| 9  |   c  |   1   |
+----+------+-------+
Run Code Online (Sandbox Code Playgroud)

我想从该组中最常用名称排序的特定组中选择前20个不同的名称.对于组1的该示例的结果将返回a b c(a-3次出现,b-2次出现和c-1次出现).

谢谢.

Mar*_*ers 13

SELECT TOP(20) [Name], Count(*) FROM Table
WHERE [Group] = 1
GROUP BY [Name]
ORDER BY Count(*) DESC
Run Code Online (Sandbox Code Playgroud)

  • 是的,因此*GROUP BY* (2认同)

mar*_*-hi 5

SELECT Top(20) 
   name, group, count(*) as occurences
FROM yourtable
GROUP BY name, group
ORDER BY count(*) desc
Run Code Online (Sandbox Code Playgroud)