SQL 选择最常见的记录

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

我想从特定组中选择前 20 个不同的名称,并按该组中最常见的名称排序。此示例中第 1 组的结果将返回 a b c ( a - 3 次出现,b - 2 次出现,c - 1 次出现)。

谢谢。

最佳答案

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

关于SQL 选择最常见的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1926838/

相关文章:

c# - 如何在C#中使用SqlDataReader读取多行和多列

mysql - 创建具有两个不同外键的表

sql - 查询中的 Oracle 和 SQLServer 函数评估

C# DataRow.ToString() 在不应该时自动格式化字符串

sql - 在 Oracle Sql 查询中获取格式化字符串

mysql - 创建一个新的连接表以反射(reflect)连接表之一中的两列主键

mysql - 解决复杂的 SQL 删除查询问题

mysql - SQL统计一个数据库中所有表的列数

sql - 在 SQL 中,如何在范围内输入 "group by"?

sql - 合并前一个记录之后的日期有零天或一天间隔的日期