SQL 计数 table 列

SQL to count table column

我有一个 table 如下图:

ID | Name | Category
--------------------
1  | Cat  | Mammal
2  | Dog  | Mammal
3  | Pea  | Vegetable
4  | Snake| Reptile

我想要一个 SQL 查询,该查询将列出每个单独的项目及其类别中的元素计数。即

Name  | Count of Category
-------------------------
Cat   | 2
Dog   | 2
Pea   | 1
Snake | 1

Edit1:我正在使用 postgrsql

如果您的数据库管理系统支持window函数,我们可以尝试使用COUNTwindow函数并在PARTITION BY

中添加每个单独的项目
SELECT Name,COUNT(*) OVER(PARTITION BY Category)
FROM T

sqlfiddle

如果可能的话,我也希望像 D-Shih 那样的 window 函数。如果你的数据库不支持这个,你可以使用子查询来统计类别,像这样:

SELECT name, c "Count of Category" FROM
yourtable y JOIN
(SELECT category, COUNT(category) c FROM yourtable GROUP BY category) sub
ON y.category = sub.category;

这将产生相同的结果。