Oracle
假設有一張資料表(pay_table)如下:
pay_date | tic_no | money | cnt |
---|---|---|---|
2019-05-15 | T300104 | $46,440 | 11 |
2019-05-15 | I300132 | $573 | 1 |
2019-05-15 | I300129/T400265 | $107,196 | 39 |
2019-05-17 | I300128 | $10,929 | 2 |
若要依pay_date欄位做分組序號,可以用ROW_NUMBER() OVER(PARTITION BY 群組依據欄位 ORDER BY 排序依據欄位 DESC)
來實現
成果如下:
group_sn | pay_date | tic_no | money | cnt |
---|---|---|---|---|
1 | 2019-05-15 | T300104 | $46,440 | 11 |
2 | 2019-05-15 | I300132 | $573 | 1 |
3 | 2019-05-15 | I300129/T400265 | $107,196 | 39 |
1 | 2019-05-17 | I300128 | $10,929 | 2 |
應用情境:資料分組後取前三筆資料 [參照]
假設有以下資料表(表名為temp_table)
商品 | 品牌 | 業績 |
---|---|---|
鞋 | NIKE | 1234000 |
鞋 | 愛迪達 | 132200 |
鞋 | 雜牌 | 223400 |
鞋 | PUMA | 43532 |
手機 | HTC | 32423 |
手機 | IPHONE | 423 |
手機 | 三星 | 23413 |
手機 | NOKIA | 14344 |
解法
結果資料集
商品 | 品牌 | 業績 | 排名 |
---|---|---|---|
手機 | HTC | 32423 | 1 |
手機 | 三星 | 23413 | 2 |
手機 | NOKIA | 14344 | 3 |
鞋 | NIKE | 1234000 | 1 |
鞋 | 雜牌 | 223400 | 2 |
鞋 | 愛迪達 | 132200 | 3 |
參考資料: