-
需求:查询一周内(每天)用户体温的平均值,结果要求如下:
-
sql语句
select * from (
select a.cDate,IFNULL(b.cValue,0) as cValue from (
SELECT DATE_FORMAT(date_sub(curdate(), interval 6 day),"%m.%d") as cDate,
(select count(1) from device_facility_data where FROM_UNIXTIME(ctime/1000, "%m.%d") <![CDATA[ < ]]> DATE_FORMAT(date_sub(curdate(), interval 5 day),"%m.%d") and user_id = #{pageData.userId} and data_type=#{pageData.dataType}) as cValue
union all
SELECT DATE_FORMAT(date_sub(curdate(), interval 5 day),"%m.%d") as cDate,
(select count(1) from device_facility_data where FROM_UNIXTIME(ctime/1000, "%m.%d") <![CDATA[ < ]]> DATE_FORMAT(date_sub(curdate(), interval 4 day),"%m.%d") and user_id = #{pageData.userId} and data_type=#{pageData.dataType}) as cValue
union all
SELECT DATE_FORMAT(date_sub(curdate(), interval 4 day),"%m.%d") as cDate,
(select count(1) from device_facility_data where FROM_UNIXTIME(ctime/1000, "%m.%d") <![CDATA[ < ]]> DATE_FORMAT(date_sub(curdate(), interval 3 day),"%m.%d") and user_id = #{pageData.userId} and data_type=#{pageData.dataType}) as cValue
union all
SELECT DATE_FORMAT(date_sub(curdate(), interval 3 day),"%m.%d") as cDate,
(select count(1) from device_facility_data where FROM_UNIXTIME(ctime/1000, "%m.%d") <![CDATA[ < ]]> DATE_FORMAT(date_sub(curdate(), interval 2 day),"%m.%d") and user_id = #{pageData.userId} and data_type=#{pageData.dataType}) as cValue
union all
SELECT DATE_FORMAT(date_sub(curdate(), interval 2 day),"%m.%d") as cDate,
(select count(1) from device_facility_data where FROM_UNIXTIME(ctime/1000, "%m.%d") <![CDATA[ < ]]> DATE_FORMAT(date_sub(curdate(), interval 1 day),"%m.%d") and user_id = #{pageData.userId} and data_type=#{pageData.dataType}) as cValue
union all
SELECT DATE_FORMAT(date_sub(curdate(), interval 1 day),"%m.%d") as cDate,
(select count(1) from device_facility_data where FROM_UNIXTIME(ctime/1000, "%m.%d") <![CDATA[ < ]]> DATE_FORMAT(date_sub(curdate(), interval 0 day),"%m.%d") and user_id = #{pageData.userId} and data_type=#{pageData.dataType}) as cValue
union all
SELECT DATE_FORMAT(curdate(),"%m.%d") as cDate,
(select count(1) from device_facility_data where FROM_UNIXTIME(ctime/1000, "%m.%d") <![CDATA[ < ]]> DATE_FORMAT(date_sub(curdate(), interval -1 day),"%m.%d") and user_id = #{pageData.userId} and data_type=#{pageData.dataType}) as cValue
) as a left join (
select FROM_UNIXTIME(ctime/1000, "%m.%d") cDate,
avg(data_value) as cValue
from device_facility_data
where user_id = #{pageData.userId}
and data_type=#{pageData.dataType}
group by FROM_UNIXTIME(ctime/1000, '%m.%d')
) b on a.cDate = b.cDate
) as aa order by aa.cDate asc