これは基本的な質問です。SQLカウントの問題
私は私のデータセットが約10万レコードを持っている
store-ProdCode
13p I10x
13p I20x
13p I30x
14a K38z
17a K38y
テーブルを持っています。
私がしようとしているのは、すべての店舗でトップ10のprodCodeが見つかるからです。
私はこれを行う方法がわからないだけど、私が試したことだった。
select s_code as store, prod_code,count (prod_code)
from top10_secondary
where prod_code is not null
group by store,prod_code
order by count(prod_code) desc limit 10
これは私に完全に異なる何かを与えていると私は私が私の最終的な結果を達成することについて行く方法についてはわかりませんよ。
予想される出力は次のようになります。すべてのヘルプは高く評価され
store--prodcode--result
1a abc 5
1a abd 4
1a xxx 7
--- this will be done until top 10 prodcodes for 1a are done--
2a dgf 1
2a ldk 6
--process completes until end of data is reached and top 10 prodcodes are displayed for each store
:すべてのストア(s_code)のために(カウントして算出上位10)上位10 prodcodeので
を表示します。これを行う最善の方法は何ですか?あなたは集計クエリで直接ウィンドウ関数を使用することができます
select s.*
from (select s_code as store, prod_code, count(prod_code),
row_number() over (partition by s_code order by count(prod_code) desc) as seqnum
from top10_secondary
where prod_code is not null
group by s_code, prod_code
) s
where seqnum <= 10;
:
おかげ
これは集約クエリであるため、「重複した」とは言えません。 –
リンクに感謝しますが、私の質問が、少し違うものを求めているように、私の質問がどのように関連しているのか分かりません。私のことを最初に数える必要があります。 – timz