سؤال

ما هو معنى أكثر من شرط في أوراكل ؟

هل كانت مفيدة؟

المحلول

على شرط يحدد التقسيم يأمر & نافذة "التي" التحليلية تعمل.

على سبيل المثال, هذا يحسب المتوسط المتحرك:

AVG(amt) OVER (ORDER BY date ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING)

date   amt   avg_amt
=====  ====  =======
1-Jan  10.0  10.5
2-Jan  11.0  17.0
3-Jan  30.0  17.0
4-Jan  10.0  18.0
5-Jan  14.0  12.0

أنها تعمل على تحريك نافذة (3 صفوف واسعة) على الصفوف التي أمر بها الآن.

هذا يحسب تشغيل التوازن:

SUM(amt) OVER (ORDER BY date ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)

date   amt   sum_amt
=====  ====  =======
1-Jan  10.0  10.0
2-Jan  11.0  21.0
3-Jan  30.0  51.0
4-Jan  10.0  61.0
5-Jan  14.0  75.0

أنها تعمل على النافذة التي تشمل الصف الحالي و قبل كل الصفوف.

هذا يحسب الأقصى ، بشكل منفصل لكل "قسم":

MAX(amt) OVER (PARTITION BY dept)

dept  amt   max_amt
====  ====  =======
ACCT   5.0   7.0
ACCT   7.0   7.0
ACCT   6.0   7.0
MRKT  10.0  11.0
MRKT  11.0  11.0
SLES   2.0   2.0

أنها تعمل على النافذة التي تشمل جميع الصفوف معين dept.

SQL كمان: http://sqlfiddle.com/#!4/9eecb7d/122

نصائح أخرى

يمكنك استخدامه لتحويل بعض الوظائف الإجمالية إلى تحليلي:

SELECT  MAX(date)
FROM    mytable

سيعود 1 صف بحد أقصى واحد،

SELECT  MAX(date) OVER (ORDER BY id)
FROM    mytable

سيعود جميع الصفوف بأقصى درجات.

انها جزء من وظائف Oracle التحليلية.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top