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

प्रति घटना प्रकार प्रति दिन कुल घटनाओं के प्रतिशत का टूटना पाने के लिए MySQL धुरी जैसा ऑपरेशन

आप गतिशील एसक्यूएल के लिए पूछ रहे हैं। अर्थात्, किसी अन्य क्वेरी से गतिशील रूप से क्वेरी स्ट्रिंग का निर्माण करें जो अलग event_type . को सूचीबद्ध करती है मान, फिर इसे निष्पादित करें। MySQL में, इसे तैयार कथनों का उपयोग करके कार्यान्वित किया जाता है।

यह कैसे करना है:

select @sql := group_concat(distinct
    'sum(case when event_type = ''', 
    event_type, ''' then number else 0 end)/sum(number) as `ratio_', 
    event_type, '`'
) 
from example_table;

set @sql = concat(
    'select date(created_at) date_bucket, ', 
    @sql, 
    ' from example_table group by date(created_at) order by date_bucket'
);

-- debug
select @sql;

-- execute
prepare stmt from @sql;
execute stmt;
deallocate prepare stmt; 

आपके नमूना डेटा के लिए, यह निम्न क्वेरी उत्पन्न करता है:

select 
    date(created_at) date_bucket, 
    sum(case when event_type = 'exampleG1' then number else 0 end)/sum(number) as `ratio_exampleG1`,
    sum(case when event_type = 'exampleG2' then number else 0 end)/sum(number) as `ratio_exampleG2`,
    sum(case when event_type = 'exampleG3' then number else 0 end)/sum(number) as `ratio_exampleG3` 
from example_table 
group by date(created_at) 
order by date_bucket

और निम्न परिणाम:

date_bucket | ratio_exampleG1 | ratio_exampleG2 | ratio_exampleG3
:---------- | --------------: | --------------: | --------------:
2020-06-02  |          0.1429 |          0.2857 |          0.5714
2020-06-03  |          1.0000 |          0.0000 |          0.0000

डीबी फिडल पर डेमो




  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. कमांड लाइन का उपयोग करके .sql फ़ाइल निष्पादित करें

  3. SQL कई तालिकाओं में सम्मिलित करें

  4. कॉलम 'आईडी' जहां क्लॉज अस्पष्ट है

  5. mysql मुद्रा के रूप में int का चयन करें या int को मुद्रा प्रारूप में कनवर्ट करें?