2017-07-02 130 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; 
相關問題