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

किसी क्वेरी में कुछ प्रतिबंध कैसे जोड़ें?

मैं आपके प्रश्न को इस प्रकार समझता हूं। 01.01.2018-12.01.2018 की अवधि में आपके 3 उपयोगकर्ता (user_id=1,2,3) लॉगिन थे। उन उपयोगकर्ताओं में से, user_id 1 ने कुल 250 भुगतान किए, user_id 2 ने 40 का 1 भुगतान किया, और user_id 3 ने 0 भुगतान किए, इसलिए उनका कुल 0 है। इसलिए 0-200 श्रेणी में 2 मान हैं। , और 1 श्रेणी में 200 + . यदि यह सही समझ है, तो यह प्रश्न आपको वांछित परिणाम देगा:

SELECT CASE  
         WHEN amount < 200 THEN '0-200'
         WHEN amount >= 200 THEN '200 +'
       END AS diapason,
       COUNT(*) AS number_of_users
FROM (SELECT a.user_id, COALESCE(SUM(p.amount), 0) AS amount
      FROM activity a
      LEFT JOIN payments p ON p.user_id = a.user_id
      WHERE a.login_time BETWEEN '01.01.2018' AND '12.01.2018'
      GROUP BY a.user_id) p
GROUP BY diapason;

आउटपुट:

diapason    number_of_users
0-200       2
200 +       1

SQLFiddle डेमो

अपडेट करें

कुल number_of_users . के साथ एक और पंक्ति जोड़ने के लिए , बस WITH ROLLUP जोड़ें GROUP BY . को खंड:

SELECT CASE  
         WHEN amount < 200 THEN '0-200'
         WHEN amount >= 200 THEN '200 +'
       END AS diapason,
       COUNT(*) AS number_of_users
FROM (SELECT a.user_id, COALESCE(SUM(p.amount), 0) AS amount
      FROM activity a
      LEFT JOIN payments p ON p.user_id = a.user_id
      WHERE a.login_time BETWEEN '01.01.2018' AND '12.01.2018'
      GROUP BY a.user_id) p
GROUP BY diapason WITH ROLLUP

आउटपुट:

diapason    number_of_users
0-200       2
200 +       1
(null)      3

अपने आवेदन ढांचे में आप इस तथ्य का उपयोग कर सकते हैं कि diapason मान NULL है कुछ आउटपुट करने के लिए जैसे Total इसके बजाय।

अपडेट किया गया SQLFiddle

आप MySQL में भी ऐसा कर सकते हैं (इसे देखें SQLFiddle ) इस क्वेरी को एक सबक्वेरी के रूप में लपेटकर और COALESCE . का उपयोग करके diapason . पर कॉलम। उस स्थिति में आउटपुट होगा:

diapason    number_of_users
0-200       2
200 +       1
Total       3


  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. MySQL लेफ्ट क्रॉस जॉइन क्वेरी इश्यू के साथ जुड़ें

  4. पायथन 3 से MySQL को एक्सेस करना:उपयोगकर्ता के लिए एक्सेस अस्वीकृत

  5. जेपीए कई से कई तक कायम है