+1 امتیاز
قبل در برنامه نویسی توسط (7.2هزار امتیاز)
برچسب گذاری دوباره قبل توسط

کلمه کلیدی partition by در اوراکل چیست و چه کاربردی دارد؟

برای مثال کوئری

SELECT appuser_message_viewed_id, appuser_id, message_id,
       ROW_NUMBER () OVER (PARTITION BY appuser_id, message_id ORDER BY creation_time)
                                                                          dup
  FROM appuser_message_viewed

خروجی زیر را می دهد:

APPUSER_MESSAGE_VIEWED_ID APPUSER_ID MESSAGE_ID        DUP
------------------------- ---------- ---------- ----------
                 29878595   20842583   29878699          1
                 30072605   20842583   30072482          1
                 30073066   20842583   30072482          2
                 30071781   20842583   30072482          3
                 30226338   20842583   30220952          1
                 30262095   20842583   30261964          1
                 31149829   20842583   31149716          1
                 31754420   20842583   31752843          1
                 31753390   20842583   31752843          2
                 31953517   20842583   31953678          1
                 32917256   20842583   32914821          1
                 32955540   20842583   32952711          1
                 32954543   20842583   32952711          2
                 33142385   20842583   33135006          1
                 33307659   21673129   33135006          1
                 31957534   31945535   31953678          1
                 32915553   31945535   32914821          1
                 32959222   31945535   32952711          1
                 33124640   31945535   33119093          1
                 33167141   31945535   33135006          1
                 32781716   32230816   32777799          1

 

1 پاسخ

+1 امتیاز
قبل توسط (7.2هزار امتیاز)
 
بهترین پاسخ

نحوه کارکرد partition by همانند کارکرد group by در توابع aggregrate را دارد که در توابع analitic کاربرد دارد ( تفاوت این دو را در https://javabyab.com/3879 می توانید ببینید)

در این حالت از partition by در کنار ROW_NUMBER استفاده شده است. در این حالت به ازای هر گروه مشترک از MESSAGE_ID و APPUSER_ID که مقادیر یک سان دارند، ROW_NUMBER شمارش مجزا انجام می دهد. به عبارتی عدد dup نشانگر چندمین تکرار یکسان MESSAGE_ID و APPUSER_ID می باشد.

سوالات مشابه

+1 امتیاز
1 پاسخ 711 بازدید
+1 امتیاز
1 پاسخ 301 بازدید
+1 امتیاز
1 پاسخ 319 بازدید
+1 امتیاز
1 پاسخ 503 بازدید
0 امتیاز
1 پاسخ 875 بازدید
+1 امتیاز
1 پاسخ 383 بازدید
...