2017-07-02 8 views
0

いくつかの行を選択し、それらの行と、選択した行の数を表示する追加の列を戻したいとします。私はhereのようにOVER() ASの機能を使用できない派生バージョンのSQLを使用しています。私は、このような初期のコラムについて一部の列を選択して同じクエリ内の行を数えよう

と同様に、テーブル全体におけるそれのカウントをしたい、選択した列の各要素のような何かをしたい:

Fruits 
Apple 
Mango 
Fruits 
Banan 

決勝返される値:

Fruits NewColumnwithCount 
Apple 2 
Mango 1 
Apple 2 
Banana 1 

のようにフルーツと呼ばれる選択された列では、アップルは2回、バナナは1回、マンゴーは1回(果物と呼ばれる選択された列全体で)表示されます

+2

使用するDBMSのタグを追加してください – Jens

+0

サンプルデータと希望の結果との接続がわかりません。 –

+0

@ZoharPeledフルーツと呼ばれる選択された列のように、アップルは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; 
関連する問題