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

SQL क्वेरी - साल दर साल बिक्री में वृद्धि

इस क्वेरी को आजमाएं:

SELECT t1.tenant, t1.YEAR, t1.SALES,
    CASE WHEN t2.YEAR IS NOT NULL THEN
        FORMAT(
            CONVERT(DECIMAL(10, 2), (t1.SALES - t2.SALES)) /
            CONVERT(DECIMAL(10, 2), t2.SALES), 'p')
    ELSE NULL END AS "YEARLY GROWTH"
FROM
(
    SELECT tenant, YEAR(date) AS YEAR, SUM(sales) AS SALES
    FROM tenantSales
    GROUP BY tenant, YEAR(date)
) t1
LEFT JOIN
(
    SELECT tenant, YEAR(date) AS YEAR, SUM(sales) AS SALES
    FROM tenantSales
    GROUP BY tenant, YEAR(date)
) t2
ON t1.tenant = t2.tenant AND t2.YEAR = t1.YEAR - 1

कार्यशील डेमो के लिए नीचे दिए गए लिंक पर क्लिक करें:

SQLFiddle

देर से अपडेट:

आप कॉमन टेबल एक्सप्रेशंस का उपयोग करके भी यही तरीका आजमा सकते हैं। यहां बताया गया है कि इस दृष्टिकोण का उपयोग करके उपरोक्त क्वेरी कैसी दिखेगी:

WITH cte AS(SELECT tenant, YEAR(date) AS YEAR, SUM(sales) AS SALES
            FROM tenantSales
            GROUP BY tenant, YEAR(date))
SELECT c1.*, CONVERT(varchar,
                 CONVERT(DECIMAL(10,2),
                     CONVERT(DECIMAL(10, 2), (c1.SALES - c2.SALES)) /
                     CONVERT(DECIMAL(10, 2), c2.SALES))) + '%' AS "YEARLY GROWTH"
FROM cte c1
LEFT JOIN cte c2 ON c1.tenant = c2.tenant AND c2.YEAR = c1.YEAR - 1

और यहाँ एक और Fiddle है जहाँ आप इसका परीक्षण कर सकते हैं:

SQLFiddle



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. मौजूद 1 या मौजूद का उपयोग करने वाली उपश्रेणी *

  2. SQL सर्वर 2017 में संबंध बनाएं

  3. संग्रहीत कार्यविधि सामग्री तक केवल पहुंच पढ़ें

  4. SQL सर्वर में संख्यात्मक, फ्लोट और दशमलव के बीच अंतर

  5. मैं SQL सर्वर में मौजूदा कॉलम में पहचान संपत्ति कैसे जोड़ूं