SQL选择最频繁的记录

5

我有以下表格:

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   |
+----+------+-------+

我希望从一个特定的组中选择出现次数最频繁的前20个不同的名称。例如对于组1,结果将返回a b c(a - 3次出现,b - 2次出现和c - 1次出现)。谢谢。
3个回答

13
SELECT TOP(20) [Name], Count(*) FROM Table
WHERE [Group] = 1
GROUP BY [Name]
ORDER BY Count(*) DESC

结果名称会是不同的吗? - Maksim Vi.

5
SELECT Top(20) 
   name, group, count(*) as occurences
FROM yourtable
GROUP BY name, group
ORDER BY count(*) desc

你可能想在ORDER BY中使用DESC。他想要最频繁的,而不是最不频繁的。 - Mark Byers

2
SELECT
    TOP 20
    Name,
    Group,
    COUNT(1) Count,
FROM
    MyTable
GROUP BY
    Name,
    Group
ORDER BY
    Count DESC

这将成为一个很好的视图或内部选择。但是,您需要一个WHERE子句才能得到他所要求的内容。 - Mark Byers

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接