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

मैसकल...असंभव क्वेरी?

असंभव नहीं, बस उलझा हुआ। आप का उपयोग कर सकते हैं STR_TO_DATE अपने स्ट्रिंग्स को DATETIME . में बदलने के लिए ऑब्जेक्ट, जिससे आप तब उपयोग कर सकते हैं MONTH महीने की संख्या प्राप्त करने के लिए। हालांकि ध्यान दें (जैसा कि @DRapp ने टिप्पणी की थी) कि आपको DATETIME storing स्टोर करना चाहिए मूल्यों को उनके मूल रूप में, VARCHAR . के रूप में नहीं , तो आपको STR_TO_DATE . से निपटने की आवश्यकता नहीं होगी . महीने की संख्या प्राप्त करने के बाद, आप अपने इच्छित परिणाम प्राप्त करने के लिए सशर्त एकत्रीकरण का उपयोग कर सकते हैं:

SELECT name,
       COALESCE(AVG(CASE WHEN mth = 1 THEN PTS END), 0) AS Jan,
       COALESCE(AVG(CASE WHEN mth = 2 THEN PTS END), 0) AS Feb,
       COALESCE(AVG(CASE WHEN mth = 3 THEN PTS END), 0) AS Mar,
       COALESCE(AVG(CASE WHEN mth = 4 THEN PTS END), 0) AS Apr,
       -- repeat for May to November
       COALESCE(AVG(CASE WHEN mth = 12 THEN PTS END), 0) AS `Dec`,
       AVG(PTS) AS AVG
FROM (
  SELECT name, PTS AS PTS, MONTH(STR_TO_DATE(DATE, '%a %b %e %H:%i:%s %Y')) AS mth
  FROM data
) d
GROUP BY name

आउटपुट (आपके नमूना डेटा के लिए):

name    Jan     Feb     Mar     Apr     Dec     AVG
Chris   0       4       0       2       0       3
John    0       0       0       2.6667  0       2.6667

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. डालने के दौरान एक स्ट्रिंग और प्राथमिक कुंजी आईडी को जोड़ना

  2. स्वत:वृद्धिशील प्राथमिक कुंजी के साथ रिकॉर्ड सम्मिलित करना

  3. ब्राउज़र पर php का उपयोग करके डेटाबेस में संग्रहीत फ़ाइल देखें

  4. MySQL कई से कई एकल पंक्तियों में शामिल होता है

  5. MySQL:विभिन्न सर्वरों पर स्थित कई डेटाबेस में क्वेरी में शामिल हों