2017-04-04 12 views
0

各グループの上位5つの結果を合計するアクセステーブルがあります。 表の例:グループのアクセス合計トップ5

Club Points Score 
    c1 25  200 
    c1 20 150 
    c1 15 100 
    c1 25 200 
    c1 25 200 
    c1 25 200 
    c2 25 200 
    c2 20 150 
    c2 15 100 

所望の結果は次のようになります。

Club Points Score 
c1  120  950 
c2  60  450 

私はこれを正しく行うには、この

答えて

0
select SUM(Points),SUM(Score) FROM table_name GROUP BY Club 
0

のための右のクエリを見つけることができないので、私は、誰かが私を助けることを願って、あなたは各行に一意のIDが本当に必要です。基本的な考え方は次のとおりです。

select club, sum(points), sum(score), count(*) as nummatches 
from t 
where score in (select top 5 t2.score 
       from t as t2 
       where t2.club = t.club 
       order by t2.score desc 
       ) 
group by club; 

問題はMS AccessでTOPが本当にTOP WITH TIESを行うということです。したがって、結びつきがある場合、5つ以上の値を取得できます。そのため、クエリには一致の数が含まれています。あなたが行うことができます。この問題を解決するには

、:

select club, sum(points), sum(score), count(*) as nummatches 
from t 
where score in (select top 5 t2.score 
       from t as t2 
       where t2.club = t.club 
       order by t2.score desc, id -- the `id` makes each row unique 
       ) 
group by club; 
+0

より多くの問題があるようです。あなたの解決策を試しましたが、t.clubが見つからないというエラーが表示されました。問題は、テーブルtがクロス集計クエリから作成されたクエリであることです。だから私はt.club = short textとid = integerの新しいクエリにパラメータを追加しなければならなかった。しかし、今私がクエリを開始するとき、私はt.clubの値とidの値を入れることを要求します。どのようにこれを解決するためのアイデア? – Jonvejn

+0

't.club'は外部クエリへの参照です。これは間違いなくMS Accessがサポートするものです。 –