ओरेकल में लीड फ़ंक्शन
Oracle में LEAD फ़ंक्शन एक विश्लेषणात्मक फ़ंक्शन है जिसमें अगली पंक्तियों पर एक अभिव्यक्ति की गणना करने की क्षमता है (पंक्तियाँ जो वर्तमान पंक्ति के बाद आने वाली हैं) और मान को वर्तमान पंक्ति में लौटाती हैं . LEAD का सामान्य सिंटैक्स नीचे दिखाया गया है:
LEAD (<expr>, <offset>, <default>) OVER (<analytic_clause>)
इसे महसूस करने के लिए एक उदाहरण लेते हैं। पहले उदाहरण डेटा तैयार करते हैं
CREATE TABLE "DEPT" ( "DEPTNO" NUMBER(2,0), "DNAME" VARCHAR2(14), "LOC" VARCHAR2(13), CONSTRAINT "PK_DEPT" PRIMARY KEY ("DEPTNO") ) CREATE TABLE "EMP" ( "EMPNO" NUMBER(4,0), "ENAME" VARCHAR2(10), "JOB" VARCHAR2(9), "MGR" NUMBER(4,0), "HIREDATE" DATE, "SAL" NUMBER(7,2), "COMM" NUMBER(7,2), "DEPTNO" NUMBER(2,0), CONSTRAINT "PK_EMP" PRIMARY KEY ("EMPNO"), CONSTRAINT "FK_DEPTNO" FOREIGN KEY ("DEPTNO") REFERENCES "DEPT" ("DEPTNO") ENABLE ); SQL> desc emp Name Null? Type ---- ---- ----- EMPNO NOT NULL NUMBER(4) ENAME VARCHAR2(10) JOB VARCHAR2(9) MGR NUMBER(4) HIREDATE DATE SAL NUMBER(7,2) COMM NUMBER(7,2) DEPTNO NUMBER(2) SQL> desc dept Name Null? Type ---- ----- ---- DEPTNO NOT NULL NUMBER(2) DNAME VARCHAR2(14) LOC VARCHAR2(13) insert into DEPT values(10, 'ACCOUNTING', 'NEW YORK'); insert into dept values(20, 'RESEARCH', 'DALLAS'); insert into dept values(30, 'RESEARCH', 'DELHI'); insert into dept values(40, 'RESEARCH', 'MUMBAI'); commit; insert into emp values( 7839, 'Clark', 'MANAGER', 7839, to_date('9-6-2008','dd-mm-yyyy'), 28573, null, 10 ); insert into emp values( 7782, 'Clara', 'MANAGER', 7839, to_date('9-6-2008','dd-mm-yyyy'), 0, null, 10 ); insert into emp values( 7934, 'Blake', 'MANAGER', 7839, to_date('1-5-2007','dd-mm-yyyy'), 0, null, 10 ); insert into emp values( 7788, 'Scott', 'ANALYST', 7788, to_date('9-6-2012','dd-mm-yyyy'), 30000, null, 20 ); insert into emp values( 7902, 'Bill', 'ANALYST', 7832, to_date('9-6-2012','dd-mm-yyyy'), 30000, null, 20 ); insert into emp values( 7876, 'TPM', 'ANALYST', 7566, to_date('9-6-2017','dd-mm-yyyy'), 11000, null, 20 ); insert into emp values( 7369, 'TPM1', 'ANALYST', 7566, to_date('9-6-2017','dd-mm-yyyy'), 8000, null, 20 ); insert into emp values( 7698, 'A1', 'ANALYST', 7788, to_date('9-6-2017','dd-mm-yyyy'), 28500, null, 30 ); insert into emp values( 7499, 'A2', 'ANALYST', 7698, to_date('9-7-2017','dd-mm-yyyy'), 16000, null, 30 ); insert into emp values( 7844, 'A3', 'ANALYST', 7698, to_date('9-7-2017','dd-mm-yyyy'), 15000, null, 30 ); insert into emp values( 7654, 'A4', 'ANALYST', 7698, to_date('9-7-2017','dd-mm-yyyy'), 12500, null, 30 ); insert into emp values( 7521, 'A5', 'ANALYST', 7698, to_date('9-7-2017','dd-mm-yyyy'), 12500, null, 30 ); insert into emp values( 7900, 'A6', 'ANALYST', 77698, to_date('9-7-2017','dd-mm-yyyy'), 0, null, 30 ); commit;
अब हम नीचे दी गई क्वेरी के अनुसार Oracle में लीड फ़ंक्शन का उपयोग कर सकते हैं
SQL> SELECT deptno, empno, sal,LEAD(sal, 1, 0) OVER ( partition by deptno ORDER BY sal DESC NULLS LAST) NEXT_LOWER_SAL FROM emp;
भिन्न डिफ़ॉल्ट मान लेना
SELECT deptno, empno, sal,LEAD(sal, 1,100) OVER ( partition by deptno ORDER BY sal DESC NULLS LAST) NEXT_LOWER_SAL FROM emp;
यदि डिफ़ॉल्ट के लिए कोई मान नहीं देते हैं, तो यह शून्य देता है जहां कोई मूल्य नहीं है। यह नीचे क्वेरी में दिखाया गया है
SELECT deptno, empno, sal,LEAD(sal) OVER ( partition by deptno ORDER BY sal DESC NULLS LAST) NEXT_LOWER_SAL FROM emp;
Oracle में LAG फ़ंक्शन
इसी प्रकार LAG पिछली पंक्तियों पर गणना करने और मान को वर्तमान पंक्ति में वापस करने की तकनीक प्रदान करता है
LAG (<expr>, <offset>, <default>) OVER (<analytic_clause>)
पहले जैसा ही डेटा सेट लेना
SQL> SELECT deptno, empno, sal,LAG(sal, 1,0) OVER ( partition by deptno ORDER BY sal DESC NULLS LAST) LAST_HIGH_SAL FROM emp;
यदि डिफ़ॉल्ट के लिए कोई मान नहीं देते हैं, तो यह शून्य देता है जहां कोई मूल्य नहीं है। यह नीचे क्वेरी में दिखाया गया है
SQL> SELECT deptno, empno, sal,LAG(sal) OVER ( partition by deptno ORDER BY sal DESC NULLS LAST) LAST_HIGH_SAL FROM emp;
मुझे उम्मीद है कि आपको Oracle में लीड और लैग फंक्शन पर यह लेख पसंद आया होगा। ये कई क्षेत्रों में बहुत उपयोगी हो सकते हैं। कृपया फ़ीडबैक प्रदान करें
संबंधित लेख
Oracle साक्षात्कार प्रश्न
Oracle में विश्लेषणात्मक कार्य
Oracle में RANK फ़ंक्शन
Oracle में Dense_Rank फ़ंक्शन
Oracle में NULLIF फ़ंक्शन
https://docs.oracle .com/hi/database/oracle/oracle-database/12.2/sqlrf/LEAD.html#GUID-0A0481F1-E98F-4535-A739-FCCA8D1B5B77