2017-05-17 2 views
0

私はSQLを初めて使い、最終出力テーブル を生成できるクエリを探すのに問題があります。私が持っているもののSQL内の複数の列から異なる値のペアを数えて除算する

例テーブル:私は、この表

SELECT id, color, count(*) as num 
from table group by id,color 

ID  Color  num  
======================= 
0  red   2 
0  blue  1 
1  red   1 
1  yellow  2 

を作ることができ、このクエリを使用して、私はこのテーブルを生成することができ、このクエリで今

ID  Color 
============= 
0  red 
0  red 
0  blue 
1  red 
1  yellow 
1  yellow 

SELECT id, count(*) as num 
from table group by id 

ID  num  
============ 
0  3 
1  3 

しかし、私はこのような結果を得ようとしています。 私は上記の2つのクエリを組み合わせて に出力する方法を見つけ出そうとしています。

ID  Color  num  
======================= 
0  red   0.667 = 2/3 
0  blue  0.333 = 1/3 
1  red   0.333 = 1/3 
1  yellow  0.667 = 2/3 

答えて

2

これらの値の分割には、countウィンドウ関数を使用できます。

SELECT distinct id, color, 
1.0*count(*) over(partition by color,id)/count(*) over(partition by id) as num 
from table 
関連する問題