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

5 टेबल का उपयोग करके क्वेरी जेनरेट करें

यहां एक दृष्टिकोण है जो काम पूरा कर सकता है। तर्क मध्यवर्ती गणना करने के लिए कुल उपश्रेणियों का उपयोग करना है।

यह क्वेरी On_sale . से आय प्राप्त करती है साल दर टेबल।

SELECT 
    YEAR(sale_date) yr, 
    SUM(sale_price) amt
FROM 
    On_sale
GROUP BY 
    YEAR(sale_date);

यह अन्य क्वेरी Sold tables टेबल का उपयोग करके प्रति स्टोर और प्रति वर्ष राजस्व प्राप्त करती है और Product :

SELECT 
    s.store_number, 
    YEAR(s.sold_date) yr, 
    SUM(s.sold_quantity * p.retail_price) amt
FROM 
    Sold s
    INNER JOIN Product p 
        ON p.pid = s.pid
GROUP BY 
    s.store_number, 
    YEAR(sold_date);

अब हम JOIN कर सकते हैं City . के साथ इन प्रश्नों के परिणाम और Store टेबल। साथ ही, हम शहरों को विभिन्न आकार श्रेणियों में विभाजित कर सकते हैं और परिणामों को एकत्रित करने के लिए इसका उपयोग कर सकते हैं। मैं LEFT JOIN का उपयोग कर रहा हूं यदि उपश्रेणियों में से कोई एक खाली परिणाम देता है (अन्यथा, INNER JOIN ठीक है):

SELECT 
    COALESCE(sa.yr, so.yr) sale_year,
    CASE 
        WHEN c.population > 200 THEN 'large'
        WHEN c.population <= 200 AND c.population > 100 THEN 'medium'
        ELSE 'small'
    END as size_range,
    SUM(COALESCE(so.amt, 0) + COALESCE(sa.amt, 0)) revenue
FROM 
    City c
    INNER JOIN Store st 
        ON  st.state = c.state 
        AND st.city_name = c.city_name
    LEFT JOIN (
        SELECT 
            s.store_number, 
            YEAR(s.sold_date) yr, 
            SUM(s.sold_quantity * p.retail_price) amt
        FROM 
            Sold s
            INNER JOIN Product p 
                ON p.pid = s.pid
        GROUP BY 
            s.store_number, 
            YEAR(sold_date)
    ) so 
        ON  so.store_number = st.store_number
    LEFT JOIN (
        SELECT 
            YEAR(sale_date) yr, 
            SUM(sale_price) amt
        FROM 
            On_sale
        GROUP BY 
            YEAR(sale_date)
    ) sa 
        ON  sa.yr = so.yr
GROUP BY
    sale_year,
    size_range
ORDER BY
    sale_year,
    size_range

यह DB Fiddle पर डेमो आपके नमूना डेटा के साथ मध्यवर्ती चरणों को प्रदर्शित करता है, और अंत में वापस आता है:

| sale_year | size_range | revenue |
| --------- | ---------- | ------- |
| 2017      | small      | 15      |
| 2018      | medium     | 14      |
| 2019      | large      | 12      |



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySql DB में डेटा डालें और प्रदर्शित करें कि क्या सम्मिलन सफल या विफलता है

  2. jdbc4.MySQLSyntaxErrorException:तालिका डेटाबेस में मौजूद नहीं है

  3. MySQL क्वेरी में इनपुट पैरामीटर के लिए सिंटैक्स

  4. MYSQL बड़ी मेज पर यादृच्छिक चुनें स्कोर द्वारा आदेश

  5. mysqli_stmt_bind_result के साथ अजीब समस्या