2016-11-29 7 views
0

ROW_NUMBERを使用して、売上を国別にランク付けしています。クエリは以下のようになりますrow_numberパーティションの結果が間違っている

SELECT country, SUM(sales) AS sales, 
     ROW_NUMBER() OVER (PARTITION BY country ORDER BY SUM(sales) DESC) AS 'rank' 
FROM table 
GROUP BY country 
ORDER BY sales DESC 

何らかの理由で、すべての国のランクが1です。

+2

COUNTRY、ROW_NUMBERリセットにより分割した場合row_numberからcountryを選択します。 –

+1

AS 'ランク'は無効な標準SQLです。どのDBMSを使用していますか? –

答えて

3

あなたは国によってグループ化しても、国によって分割されているので、あなたは常に1.削除 `パーティションのランクで国ごとに1行を取得します1

SELECT country, 
     SUM(sales) AS sales, 
     ROW_NUMBER() OVER (ORDER BY SUM(sales) DESC) AS 'rank' 
FROM table 
GROUP BY country 
ORDER BY sales DESC 
+0

ああ、そうは思いませんでした。 – Faiz

+0

SUMウィンドウ関数を使用してグループを削除することもできます。 –

+0

@ JoeC私はそれについて頑張っていますが、あなたは 'row_number'を追加することができますか? –