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

सामान्य तालिका अभिव्यक्तियाँ:उनका उपयोग कब और कैसे करें

कॉमन टेबल एक्सप्रेशन (CTE) क्या हैं?

एक सामान्य तालिका अभिव्यक्ति (सीटीई) एक क्वेरी का परिणाम सेट है जो अस्थायी रूप से मौजूद है और केवल एक बड़ी क्वेरी के संदर्भ में उपयोग के लिए है। एक व्युत्पन्न तालिका की तरह, सीटीई का परिणाम संग्रहीत नहीं होता है और केवल क्वेरी की अवधि के लिए मौजूद होता है। यह लेख गैर-पुनरावर्ती सीटीई पर केंद्रित होगा।

CTE कैसे सहायक होते हैं?

CTE, जैसे डेटाबेस दृश्य और व्युत्पन्न तालिकाएँ, उपयोगकर्ताओं को अधिक आसानी से लिखने और जटिल प्रश्नों को अधिक पठनीयता और सरलीकरण के माध्यम से बनाए रखने में सक्षम बनाती हैं। जटिलता में यह कमी सामान्य रूप से जटिल प्रश्नों को उपयोग किए जाने वाले सरल ब्लॉकों में विघटित करके प्राप्त की जाती है, और यदि आवश्यक हो तो क्वेरी को फिर से लिखने में पुन:उपयोग किया जाता है। उदाहरण के उपयोग के मामलों में शामिल हैं:

  • एक ही क्वेरी में व्युत्पन्न तालिका को कई बार संदर्भित करने की आवश्यकता है
  • डेटाबेस में दृश्य बनाने का एक विकल्प
  • एक से अधिक क्वेरी घटकों में एक ही गणना को कई बार निष्पादित करना

CTE कैसे बनाएं

  • “साथ” का उपयोग करके सीटीई आरंभ करें
  • जल्द ही परिभाषित क्वेरी के परिणाम के लिए एक नाम प्रदान करें
  • नाम निर्दिष्ट करने के बाद, "एएस" के साथ पालन करें
  • स्तंभ नाम निर्दिष्ट करें (वैकल्पिक चरण)
  • वांछित परिणाम सेट करने के लिए क्वेरी को परिभाषित करें
  • यदि एकाधिक सीटीई आवश्यक हैं, तो प्रत्येक बाद के व्यंजक को अल्पविराम से आरंभ करें और चरण 2-4 दोहराएं।
  • उपरोक्त परिभाषित सीटीई(ओं) को बाद की क्वेरी में देखें

सिंटैक्स

WITH
expression_name_1 AS
(CTE query definition 1)

[, expression_name_X AS
   (CTE query definition X)
 , etc ]

SELECT expression_A, expression_B, ...
FROM expression_name_1

##उदाहरण CTEनिम्न प्रश्न व्यावसायिक प्रश्न का उत्तर देता है:"कंपनी के विपणन प्रयासों के लिए प्रति अभियान औसत मासिक लागत क्या है?" यह एक व्युत्पन्न क्वेरी (नीचे दिखाया गया) के साथ पूरा किया जा सकता है; हालांकि, सीटीई का उपयोग करने से पठनीयता में सुधार होता है

-- define CTE:
WITH Cost_by_Month AS
(SELECT campaign_id AS campaign,
       TO_CHAR(created_date, 'YYYY-MM') AS month,
       SUM(cost) AS monthly_cost
FROM marketing
WHERE created_date BETWEEN NOW() - INTERVAL '3 MONTH' AND NOW()
GROUP BY 1, 2
ORDER BY 1, 2)

-- use CTE in subsequent query:
SELECT campaign, avg(monthly_cost) as "Avg Monthly Cost"
FROM Cost_by_Month
GROUP BY campaign
ORDER BY campaign

व्युत्पन्न क्वेरी का उपयोग करना:

SELECT campaign, avg(monthly_cost) as "Avg Monthly Cost"
FROM
    -- this is where the derived query is used
    (SELECT campaign_id AS campaign,
       TO_CHAR(created_date, 'YYYY-MM') AS month,
       SUM(cost) AS monthly_cost
    FROM marketing
    WHERE created_date BETWEEN NOW() - INTERVAL '3 MONTH' AND NOW()
    GROUP BY 1, 2
    ORDER BY 1, 2) as Cost_By_Month
GROUP BY campaign
ORDER BY campaign

दस्तावेज़ीकरण

  • पोस्टग्रेज
  • रेडशिफ्ट
  • ओरेकल
  • एसक्यूएलसर्वर

  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. मांग के साथ आपूर्ति का मिलान चुनौती

  3. डेटाबेस को पायथन से कैसे कनेक्ट करें

  4. एसक्यूएल अंकगणित ऑपरेटर

  5. डेटाबेस सारांश रिपोर्ट भेजने के लिए ऑटो-ईमेल सिस्टम