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

कुल चलने के साथ महीने के हिसाब से MySQL समुच्चय

दुर्भाग्य से, MySQL विश्लेषणात्मक कार्य प्रदान नहीं करता है, जैसे Oracle और SQL सर्वर करते हैं।

"रनिंग टोटल" प्राप्त करने का एक तरीका उपयोगकर्ता चर का उपयोग करना है, कुछ इस तरह:

  SELECT t.Date
       , t.NewUsers
       , @rt := @rt + t.NewUsers AS `Running Total`
    FROM (SELECT @rt := 0) i
    JOIN (
           SELECT DATE_FORMAT(created,'%Y%m%d') AS `Date`
                , COUNT(item_id) as `NewUsers`
             FROM AP_user
            WHERE YEAR(created) > 2011
              AND user_groups = '63655'
              AND user_active = 1
              AND userID NOT IN $excludedUsers
            GROUP BY DATE_FORMAT(created,'%Y-%m')
            ORDER BY DATE_FORMAT(created,'%Y-%m') ASC
         ) t

नोट:ऊपर इस्तेमाल किए गए मेमोरी वैरिएबल के व्यवहार की इस संदर्भ में गारंटी नहीं है। लेकिन अगर हम क्वेरी के साथ सावधानी बरतते हैं, तो हम SELECT स्टेटमेंट्स में प्रेडिक्टेबल, रिपीटेबल रिजल्ट्स प्राप्त कर सकते हैं। मेमोरी वेरिएबल्स का व्यवहार भविष्य के रिलीज में बदल सकता है, इस दृष्टिकोण को अनुपयोगी बना सकता है।

नोट:मैंने मूल रूप से आपकी क्वेरी को कोष्ठक में लपेट लिया है, और इसे एक इनलाइन व्यू के रूप में उपनाम दिया है (जिसे MySQL "व्युत्पन्न तालिका" कहता है)। मैंने आपकी क्वेरी में कुछ बदलाव किए हैं, आपके GROUP BY में जनवरी 2012 को 2013 से जनवरी के साथ समूहबद्ध करने की क्षमता है, मैंने उसे बदल दिया है। मैंने एक ORDER BY खंड भी जोड़ा है।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. mysqli ने स्टेटमेंट तैयार किया num_rows 0 देता है जबकि क्वेरी 0 से अधिक रिटर्न करती है

  2. कॉलम नाम में आरक्षित शब्द - MySQL में डालें

  3. mySQL GROUP_CONCAT कथन में एक आंतरिक जुड़ाव जोड़ें

  4. MySQL में आयु की गणना करें (InnoDb)

  5. दिनांक स्ट्रिंग को mysql डेटाटाइम फ़ील्ड में बदलें