各国コード、都市コード、年齢別にトップ10を表示する必要がありますが、どのようにランク関数を使用できますか? 国、都市、年齢の3ループを作成してカーソルを試しましたが、パフォーマンスが悪かったです。 私は結果(Original Image)を取得する必要がありますどのようにこの本:異なる変数にSQLランク関数を使用する方法
+ ----------- + -------- + --- + --- +
| CountryCode | CityCode | Age | Num |
+ ----------- + -------- + --- + --- +
| 1 | 2 | 23 | 67 |
| 1 | 2 | 24 | 56 |
| 1 | 2 | 25 | 44 |
| 1 | 6 | 23 | 89 |
| 1 | 6 | 24 | 77 |
| 1 | 7 | 23 | 90 |
| 1 | 2 | 23 | 67 |
| 1 | 2 | 24 | 56 |
| 1 | 2 | 25 | 44 |
| 1 | 6 | 23 | 89 |
| 1 | 6 | 24 | 77 |
| 1 | 7 | 23 | 90 |
+ ----------- + -------- + --- + --- +
row_number()をrank()に置き換えます。これにより、同じ値がtiesに割り当てられます。この場合、row_number、rankおよびdense_rankは次のようになります。 –
@MaxSzczurek - 'dense_rank'がより適していると思います。 – GurV
はい、おそらくdense_rankです。明確にするために、同点がある場合、dense_rank()は値をスキップしませんが、rank()は値をスキップしません。たとえば、ランク付けされたnum値が70,75,75,80の場合、dense_rankはそれらを1,2,2,3とランク付けしますが、ランクは1,2,2,4とランク付けされ、ネクタイがあったため3をスキップします#2のために。 –