2017-11-23 8 views
2

を作ることによって、全体のグループでカウントSQL要求:私はこのデータベースを持っている</p> <p>:私は現在、単純な要求...にブロックされています、同じライン上の割合

order | couple | first | second 
------------------------------- 
    1 | A-B | A | B 
    2 | A-D | A | D 
    3 | A-C | A | C 
    4 | A-B | A | B 
    5 | Y-Z | Y | Z 

I 1行で取得したいと考えています:

order | count | total | percentage 
------------------------------- 
A-B | 2 | 4 | 50% 
A-D | 1 | 4 | 25% 
A-C | 1 | 4 | 25% 
Y-Z | 1 | 1 | 100% 

私は最初の部分を見つけるのは大丈夫です。カウント...しかし、合計とパーセンテージ(サブクエリを使用する代わりに)に参加することはできません...:私は結合をしようとすると、多くの異なるエラーが発生しました。

最初の部分のための私の要求:第二部のための

SELECT couple,count(couple) 
FROM DATA d1 
WHERE exists (
    SELECT * 
    FROM DATA d2 
    WHERE d1.first = d2.first) 
GROUP BY d1.couple; 

マイリクエスト:

SELECT first, count(first) 
FROM DATA 
GROUP BY first; 

誰かがヒントをGOTS?

答えて

3

は、私はあなたがしたいと思う:その通り

select couple, count(*), 
     count(*) over (partition by first) as total, 
     (count(*) * 1.0/sum(count(*)) over (partition by first)) as ratio 
from t 
group by couple, first; 
+0

!あなたはとても素早いです:o!しかし、合計で私は数を望んでいないが、私は合計が欲しい...:私の製品は4倍であるので、2/2ではない2/2 –

+0

それ以上:select couple、count(*)(count(*)* 1.0/sum(count(*))over)(最初のパーティションによる)over from dico1 グループによる合計(count(*)) 、 最初; でも、ありがとうございました! –

+0

残念ながら、私のデータのために問題があることが分かりました(いくつかの製品Aは2番目にあります)。だから私はAが同じ行に単独でいる別のテーブルから数えたいと思う:Order |製品(A)。私はそれを同じ方法で管理できますか、それとも別の要求ですか? –

関連する問題