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

साक्षात्कार प्रश्न:कॉलम स्तर पर पिछले 3 महीने का एकत्रीकरण कैसे प्राप्त करें?

आपको सबसे पहले महीने के डेटा का योग करना होगा और फिर पिछले महीनों के डेटा को निम्न के रूप में प्राप्त करने के लिए LAG फ़ंक्शन का उपयोग करना होगा:

SELECT
    ORDER_MONTH,
    LAG(UNIT_OF_PHONE_SALE, 1) OVER(
        ORDER BY
            ORDER_MONTH
    ) AS "M-1_Sale",
    LAG(UNIT_OF_PHONE_SALE, 2) OVER(
        ORDER BY
            ORDER_MONTH
    ) AS "M-2_Sale",
    LAG(UNIT_OF_PHONE_SALE, 3) OVER(
        ORDER BY
            ORDER_MONTH
    ) AS "M-3_Sale"
FROM
    (
        SELECT
            TO_CHAR(ORDERDATE, 'YYYYMM') AS ORDER_MONTH,
            SUM(UNIT_OF_PHONE_SALE) AS UNIT_OF_PHONE_SALE
        FROM
            DATAA
        GROUP BY
            TO_CHAR(ORDERDATE, 'YYYYMM')
    )
ORDER BY
    ORDER_MONTH DESC;

आउटपुट:

ORDER_   M-1_Sale   M-2_Sale   M-3_Sale
------ ---------- ---------- ----------
201908       3789        789        666
201907        789        666        765
201906        666        765
201905        765
201904

db<>fiddle डेमो

चीयर्स!!

-- अपडेट करें--

टिप्पणियों में उल्लिखित आवश्यकता के लिए, निम्नलिखित प्रश्न इसके लिए काम करेंगे।

CTE AS (
    SELECT
        TRUNC(ORDERDATE, 'MONTH') AS ORDER_MONTH,
        SUM(UNIT_OF_PHONE_SALE) AS UNIT_OF_PHONE_SALE
    FROM
        DATAA
    GROUP BY
        TRUNC(ORDERDATE, 'MONTH')
)

SELECT
    TO_CHAR(C.ORDER_MONTH,'YYYYMM') as ORDER_MONTH,
    NVL(C1.UNIT_OF_PHONE_SALE, 0) AS "M-1_Sale",
    NVL(C2.UNIT_OF_PHONE_SALE, 0) AS "M-2_Sale",
    NVL(C3.UNIT_OF_PHONE_SALE, 0) AS "M-3_Sale"
FROM
    CTE C
    LEFT JOIN CTE C1 ON ( C1.ORDER_MONTH = ADD_MONTHS(C.ORDER_MONTH, - 1) )
    LEFT JOIN CTE C2 ON ( C2.ORDER_MONTH = ADD_MONTHS(C.ORDER_MONTH, - 2) )
    LEFT JOIN CTE C3 ON ( C3.ORDER_MONTH = ADD_MONTHS(C.ORDER_MONTH, - 3) )
ORDER BY
    C.ORDER_MONTH DESC

आउटपुट:

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. संचयी विश्लेषणात्मक कार्यों का उपयोग करके किसी क्वेरी में शून्य-मान रिकॉर्ड जोड़ना

  2. Rownum पर Sql क्वेरी

  3. ओरेकल कनेक्शन में डीबीसीपी कनेक्शन कैसे डालें?

  4. Oracle जावा / JPA प्रोग्रामर के लिए खाली स्ट्रिंग को NULL समस्या के रूप में मानता है

  5. java.sql.SQLException:श्रोता ने निम्न त्रुटि के साथ कनेक्शन से इनकार कर दिया:ORA-12519, TNS:कोई उपयुक्त सेवा हैंडलर नहीं मिला