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

डेटा विभाजित करने के लिए क्वेरी

@अनी; हाइव में चार तिमाहियों (1,2,3,4) बनाने के लिए कोई पदानुक्रमित क्वेरी नहीं है, इसलिए मैं इसके लिए एक छोटी तालिका बनाता हूं। तब मुझे सभी रोगी_आईडी, वर्ष और महीने मिलते हैं जो ims_patient_activity_diagnosis तालिका में मौजूद हैं। अंत में, मैंने सभी संभावित रोगी आईडी, वर्ष और तिमाहियों (1,2,3,4) पर राइट जॉइन किया; यदि सही जॉइन में आईडी या वर्ष या तिमाही मौजूद नहीं है, तो उस आईडी, वर्ष और तिमाही के लिए कोई गतिविधि नहीं है। मैं उन पंक्तियों के लिए गतिविधि =0 असाइन करता हूं। तालिका में अधिक रोगी आईडी हैं या नहीं, यह जांचने के लिए मैंने रोगी आईडी =200 भी डाला। उम्मीद है ये मदद करेगा। धन्यवाद।

create table dbo.qtrs(month int);
insert into qtrs  values (1),(2),(3),(4);

select DISTINCT NVL(ims.id, qtr.id) as patient_id,
qtr.year as year,
qtr.month as month,
CASE WHEN ims.id > 0 THEN 1 ELSE 0 END as activity  
from sandbox_grwi.ims_patient_activity_diagnosis ims
right join (select distinct ims.id,YEAR(ims.month_dt) as year,qtrs.month from sandbox_grwi.ims_patient_activity_diagnosis ims join dbo.qtrs qtrs) qtr 
on (ims.id=qtr.id and YEAR(ims.month_dt)=qtr.year and INT((MONTH(month_dt)-1)/3)+1=qtr.month)
sort by patient_id, year, month;

Sample Result:
p_id    year    month   activity
100     2012    1       1
100     2012    2       0
100     2012    3       0
100     2012    4       0
100     2013    1       1
100     2013    2       1
100     2013    3       1
100     2013    4       0
100     2014    1       1
100     2014    2       1
100     2014    3       0
100     2014    4       1
100     2015    1       1
100     2015    2       0
100     2015    3       1
100     2015    4       1
100     2016    1       0
100     2016    2       1
100     2016    3       0
100     2016    4       1
200     2012    1       1
200     2012    2       0
200     2012    3       0
200     2012    4       0
200     2013    1       0
200     2013    2       1
200     2013    3       0
200     2013    4       0


additional sample data:
insert into sandbox_grwi.ims_patient_activity_diagnosis values
(200, '2012-03-01'), 
(200, '2013-04-01'); 



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PHP एसक्यूएल एसटीएमटी एकाधिक पसंद का चयन करें? क्या यह संभव है?

  2. ऑर्डर बाय और लिमिट का उपयोग करके अजीब परिणाम

  3. मैं समवर्ती MySQL कनेक्शन के बारे में उलझन में हूँ

  4. आप mysql से प्रत्येक n-वें पंक्ति का चयन कैसे करते हैं?

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