如何编写SQL查询获取不同Name值及对应出现次数?
解决方案
原始表数据
| ID | Name | Surname | Grade |
|---|---|---|---|
| 1 | A | K | 10 |
| 2 | B | L | 20 |
| 3 | C | M | 30 |
| 4 | A | N | 40 |
| 5 | C | O | 50 |
实现SQL
针对支持窗口函数的数据库(如MySQL 8.0+、PostgreSQL、SQL Server),可以使用以下查询:
SELECT ROW_NUMBER() OVER (ORDER BY Name) AS ID, Name, COUNT(*) AS Count FROM your_table_name GROUP BY Name ORDER BY Name;
关键说明
GROUP BY Name:将相同Name的记录聚合为一组COUNT(*):统计每组内的记录数,即对应Name的出现次数ROW_NUMBER() OVER (ORDER BY Name):生成连续的序号作为结果中的ID,按Name排序生成- 替换
your_table_name为你实际的表名
查询结果
| ID | Name | Count |
|---|---|---|
| 1 | A | 2 |
| 2 | B | 1 |
| 3 | C | 2 |
内容的提问来源于stack exchange,提问作者mehmet_kacmaz_03
相关产品推荐
相关产品推荐

