Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

रैंक () एसक्यूएल या ऐसा कुछ

LAG का प्रयोग करें विश्लेषणात्मक कार्य:

SELECT "Date",
       GREATEST(
         account_balance - LAG(account_balance, 1, 0) OVER (ORDER BY "Date"),
         0
       ) AS credit,
       GREATEST(
         LAG(account_balance, 1, 0) OVER (ORDER BY "Date") - account_balance,
         0
       ) AS debit,
       account_balance
FROM   table_name

जो, नमूना डेटा के लिए:

CREATE TABLE table_name ( "Date", account_balance ) AS
SELECT Date '2021-01-01', +1000 FROM DUAL UNION ALL
SELECT Date '2021-01-02', + 500 FROM DUAL UNION ALL
SELECT Date '2021-01-03', - 200 FROM DUAL;

आउटपुट:

विपरीत दिशा में गणना करने के लिए:

SELECT "Date",
       credit,
       debit,
       SUM(credit-debit) OVER (ORDER BY "Date") AS account_balance
FROM   table_name

जो, नमूना डेटा के लिए:

CREATE TABLE table_name ( "Date", credit, debit ) AS
SELECT Date '2021-01-01', 1000,   0 FROM DUAL UNION ALL
SELECT Date '2021-01-02',    0, 500 FROM DUAL UNION ALL
SELECT Date '2021-01-03',    0, 700 FROM DUAL;

आउटपुट:

db<>fiddle यहां




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ORA-22905 - जब किसी तालिका प्रकार को चयन कथन के साथ क्वेरी किया जाता है

  2. SQL में शामिल होने से डुप्लिकेट कॉलम कैसे निकालें

  3. ADODFCMP उपयोगिता

  4. सत्रों के लिए प्रतिशत के रूप में oracle CPU उपयोग दिखाएं

  5. हाइबरनेट आईडी वेतन वृद्धि ओरेकल