Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

kueri untuk membagi data

@ani; tidak ada kueri hierarkis di Hive untuk membuat empat perempat (1,2,3,4) jadi saya membuat tabel kecil untuk itu. Lalu saya mendapatkan semua patient_id, tahun dan bulan yang ada di tabel ims_patient_activity_diagnosis. Akhirnya, saya melakukan hak gabung pada semua kemungkinan id pasien, tahun dan kuartal (1,2,3,4); Jika id atau tahun atau kuartal tidak ada di kanan gabung, maka tidak ada aktivitas untuk id, tahun, dan kuartal itu. Saya menetapkan aktivitas=0 untuk baris tersebut. Saya juga memasukkan id pasien=200 untuk menguji apakah ada lebih banyak id pasien dalam tabel. Semoga ini membantu. Terima kasih.

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. Bagaimana cara menghitung persen?

  2. Tidak dapat menampilkan nilai yang dipisahkan koma dalam tabel

  3. Strategi caching, kapan caching menjadi sia-sia?

  4. Tabel drop massal MySQL di mana tabel seperti?

  5. Keamanan dasar, PHP mySQl