2017-07-02 66 views
0

我想选择一些行并希望返回这些行加上显示所选行数的附加列。我正在使用sql的派生版本,它不允许我使用OVER() AS函数,如讨论here。我想是在选定的列中的每个元素,我想它在整个表的计数像SELECT some column and count the rows in the same query

初始列如下:

Fruits 
Apple 
Mango 
Fruits 
Banan 

最终返回的值:

Fruits NewColumnwithCount 
Apple 2 
Mango 1 
Apple 2 
Banana 1 

像在选定的水果名为水果,苹果出现2次,香蕉1次和芒果1次(在整个选定的专栏称为水果)

+2

请为您使用的DBMS添加标签 – Jens

+0

我无法理解您的样本数据与您想要的结果之间的关系。 –

+0

@ZoharPeled,就像在选定的Colum水果一样,苹果出现2次,香蕉1次,芒果1次(在整个选定的专栏称为水果) – crystal

回答

2

使用GROUP BY作为:

SELECT COUNT(FruitID), FruitName FROM Fruits GROUP BY FruitName;

UDPATE

SELECT FruitName, (select count(fs.id) FROM Fruits fs where fs.id = f.id GROUP BY fs.FruitName) as 'count' FROM Fruits f;

子查询将返回所选择的水果有多少次出现

+0

但是这会将所有苹果分组在一起,不是吗?我希望每一次苹果都像现在一样出现,并附有计数的附加信息 – crystal

+0

好吧,我现在得到它......然后使用子查询计数。检查更新的答案 –

1

您正在寻找窗口功能:

select fruit, count(*) over (partition by fruit) as NewColumnwithCount 
from t; 
相关问题