希望有人能指出我在這裏的正確方向。row_number()分析函數的奇數行爲
查看下面的查詢。
SELECT day_id,month_id,time_id,
row_number() over (partition BY month_id order by day_id) rn
FROM minute_bars_fact order by month_id, day_Id, time_id
生成輸出:
DAY_ID MONTH_ID Time_id rn
02-JAN-11 JAN-2011 1080 1
02-JAN-11 JAN-2011 1081 2
02-JAN-11 JAN-2011 1082 3
02-JAN-11 JAN-2011 1083 4
02-JAN-11 JAN-2011 1084 5
02-JAN-11 JAN-2011 1085 6
02-JAN-11 JAN-2011 1086 7
02-JAN-11 JAN-2011 1087 8
我預計這裏將是RN將只在每個新的一天遞增。顯然情況並非如此。我在這裏做錯了什麼?
編輯:
日子不總是一樣的。
02-JAN-11 JAN-2011 1436 357
02-JAN-11 JAN-2011 1437 358
02-JAN-11 JAN-2011 1438 359
02-JAN-11 JAN-2011 1439 360
03-JAN-11 JAN-2011 0 361
03-JAN-11 JAN-2011 1 362
03-JAN-11 JAN-2011 2 363
03-JAN-11 JAN-2011 3 364
因爲所有的月份都是一樣的,所以'row_number()'[提供一個唯一的](http://docs.oracle.com/cd/B19306_01/server.102/b14200/functions137.htm)每個_partition_這種行爲是正確的。我想你可能正在尋找'rank()'函數,如果日期相同,它將返回相同的數字。 – Ben