Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

truy vấn để phân chia dữ liệu

@Ani; không có truy vấn phân cấp trong Hive để tạo bốn phần tư (1,2,3,4) vì vậy tôi tạo một bảng nhỏ cho nó. Sau đó, tôi nhận được tất cả bệnh nhân_id, năm và tháng tồn tại trong bảng ims_patology_activity_diagnosis. Cuối cùng, tôi đã tham gia đúng vào tất cả id bệnh nhân có thể có, năm và quý (1,2,3,4); Nếu id hoặc năm hoặc quý không tồn tại trong kết hợp phù hợp, thì sẽ không có hoạt động nào cho id, năm và quý đó. Tôi chỉ định hoạt động =0 cho các hàng đó. Tôi cũng chèn id bệnh nhân =200 để kiểm tra xem có nhiều id bệnh nhân hơn trong bảng hay không. Hi vọng điêu nay co ich. Cảm ơn.

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 / MySQL - BEGIN ... CAM KẾT Không hoạt động

  2. Truy vấn mySQL:Làm thế nào để chèn với UNION?

  3. Làm thế nào để lưu trữ và truy xuất dữ liệu văn bản trong MySQL bảo toàn các dấu ngắt dòng?

  4. mysql tham gia truy vấn thứ tự theo hai cột

  5. Khóa mức hàng trong Mysql