--按salary排序,計算當前行到下面兩行的salary累加值,紅色部分爲例,可以看到2340等於3個salary的值,物理行範圍,一眼看就看出來了 SQL> select id,last_name,salary,dept_id, 2 sum(salary) over(order by salary 3 rows between current row and 2 following) 4 from s_emp; ID LAST_NAME SALARY DEPT_ID SUM(SALARY)OVER(ORDERBYSALARYR -------- ------------------------- ------------- -------- ------------------------------ 20 Newman 750.00 43 2340 19 Patel 795.00 42 2390 23 Patel 795.00 34 2445 22 Chang 800.00 44 2510 21 Markarian 850.00 43 2650 24 Dancs 860.00 45 2900 17 Smith 940.00 41 3140 8 Biri 1100.00 43 3400 25 Schwartz 1100.00 45 3500 18 Nozaki 1200.00 42 3650 6 Urguhart 1200.00 41 3750 7 Menchu 1250.00 42 3857 9 Catchpole 1300.00 44 4007 10 Havel 1307.00 45 4107 3 Nagayama 1400.00 31 4200 16 Maduro 1400.00 41 4250 11 Magee 1400.00 31 4300 15 Dumas 1450.00 35 4350 4 Quick-To-See 1450.00 10 4390 2 Ngao 1450.00 41 4455 12 Giljum 1490.00 32 4530 13 Sedeghi 1515.00 33 4590 14 Nguyen 1525.00 34 5575 5 Ropeburn 1550.00 50 4050 1 Velasquez 2500.00 50 2500 25 rows selected SQL> --range是邏輯行的範圍,要經過計算的,一般range後面是數值或時間間隔等,這樣根據當前行和range的表達式就能計算當前行對應的窗口範圍,這個是邏輯範圍,一眼 --看不出來,要經過range後的表達式和當前行的值計算才知道,這就是rows和range的區別。 --如下:按salary排序,計算當前行到比當前行的salary最大大350結束的窗口的累加salary值,如紅色7990=第1行到第9行最大爲1100的行結束,第1行對應的窗口計算範圍就有9行,因爲第10行的salary是1200,那麼1200-750=450>350。 SQL> select id,last_name,salary,dept_id, 2 sum(salary) over(order by salary 3 range between current row and 350 following) 4 from s_emp; ID LAST_NAME SALARY DEPT_ID SUM(SALARY)OVER(ORDERBYSALARYR -------- ------------------------- ------------- -------- ------------------------------ 20 Newman 750.00 43 7990 19 Patel 795.00 42 7240 23 Patel 795.00 34 7240 22 Chang 800.00 44 5650 21 Markarian 850.00 43 7250 24 Dancs 860.00 45 6400 17 Smith 940.00 41 6790 8 Biri 1100.00 43 17007 25 Schwartz 1100.00 45 17007 18 Nozaki 1200.00 42 20887 6 Urguhart 1200.00 41 20887 7 Menchu 1250.00 42 18487 9 Catchpole 1300.00 44 17237 10 Havel 1307.00 45 15937 3 Nagayama 1400.00 31 14630 16 Maduro 1400.00 41 14630 11 Magee 1400.00 31 14630 15 Dumas 1450.00 35 10430 4 Quick-To-See 1450.00 10 10430 2 Ngao 1450.00 41 10430 12 Giljum 1490.00 32 6080 13 Sedeghi 1515.00 33 4590 14 Nguyen 1525.00 34 3075 5 Ropeburn 1550.00 50 1550 1 Velasquez 2500.00 50 2500 25 rows selected |
oracle中range/rows的區別
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.