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

MySQL क्वेरी वर्तमान 52-सप्ताह के लिए सप्ताह के हिसाब से आइटम गिनने के लिए?

कुछ लोग इस दृष्टिकोण को नापसंद करते हैं लेकिन मैं एक डमी टेबल का उपयोग करता हूं जिसमें 0 - 1000 के मान होते हैं और फिर आवश्यक श्रेणियों का उत्पादन करने के लिए व्युत्पन्न तालिका का उपयोग करते हैं -

CREATE TABLE dummy (`num` INT NOT NULL);
INSERT INTO dummy VALUES (0), (1), (2), (3), (4), (5), .... (999), (1000);

यदि आपके पास एक ऑटो-इन्क्रीमेंटिंग आईडी वाली तालिका है और बहुत सारी पंक्तियाँ हैं तो आप इसे उससे उत्पन्न कर सकते हैं -

CREATE TABLE `dummy`
SELECT id AS `num` FROM `some_table` WHERE `id` <= 1000;

बस 0 मान डालना याद रखें।

SELECT CURRENT_DATE - INTERVAL num DAY
FROM dummy
WHERE num < 365

तो, इस दृष्टिकोण को अपनी क्वेरी में लागू करने से आप कुछ ऐसा कर सकते हैं -

SELECT WEEK(calendar.datefield) AS `week`, IFNULL(SUM(purchaseyesno),0) AS item_sales
FROM items_purchased join items on items_purchased.item_id=items.item_id 
RIGHT JOIN (
    SELECT (CURRENT_DATE - INTERVAL num DAY) AS datefield
    FROM dummy
    WHERE num < 365
) AS calendar ON (DATE(items_purchased.purchase_date) = calendar.datefield)
WHERE calendar.datefield >= (CURRENT_DATE - INTERVAL 1 YEAR)
GROUP BY week(datefield) -- shouldn't this be datefield instead of date?


  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. MySQL में समान आईडी वाली पंक्तियों के फ़ील्ड को संयोजित करें

  3. दो कॉलम मानों को कैसे गुणा करें और प्रत्येक पंक्ति के अंत में अपना परिणाम कैसे प्रदर्शित करें?

  4. स्ट्रिंग में अंतिम अल्पविराम के बाद सभी वर्णों को हटाने के लिए क्वेरी

  5. mysql डेटा के क्षैतिज लेआउट के लिए क्वेरी