diff --git a/health-watch/health-watch-biz/src/main/java/com/renkang/watch/mapper/xml/WatchStatUserInfoDayHeartRateMapper.xml b/health-watch/health-watch-biz/src/main/java/com/renkang/watch/mapper/xml/WatchStatUserInfoDayHeartRateMapper.xml index 32b0f5b..30eef6b 100644 --- a/health-watch/health-watch-biz/src/main/java/com/renkang/watch/mapper/xml/WatchStatUserInfoDayHeartRateMapper.xml +++ b/health-watch/health-watch-biz/src/main/java/com/renkang/watch/mapper/xml/WatchStatUserInfoDayHeartRateMapper.xml @@ -334,68 +334,75 @@ AND wsd.data_date = temp.latest_date; + - insert into watch_stat_user_info_day_heart_rate(id, user_id, max_value, min_value, avg_value, silence_max_value, - silence_min_value, silence_avg_value, last_upload_time, new_value, silence_new_value, data_date, org_code) - (select #{id,jdbcType=VARCHAR}, - bind_user_id, - ifnull(max(data_value), 0), - ifnull(min(data_value), 0), - ifnull(avg(data_value), 0), - ifnull(max(silence_value), 0), - ifnull(min(silence_value), 0), - ifnull(avg(silence_value), 0), - ifnull(max(time_stamp), NOW()), - ifnull(data_value, 0), - ifnull(silence_value, 0), - data_date, - #{orgCode,jdbcType=VARCHAR} - from watch_data_heart_rate - where bind_user_id = #{userId,jdbcType=VARCHAR} - and data_date = #{dataDate,jdbcType=DATE} - group by bind_user_id, data_date); + INSERT INTO watch_stat_user_info_day_heart_rate ( id, user_id, max_value, min_value, avg_value, silence_max_value, silence_min_value, silence_avg_value, last_upload_time, new_value, silence_new_value, data_date, org_code ) ( + SELECT + #{id,jdbcType=VARCHAR}, + bind_user_id, + IFNULL( MAX( wd.data_value ), 0 ), + IFNULL( MIN( wd.data_value ), 0 ), + IFNULL( AVG( wd.data_value ), 0 ), + IFNULL( MAX( wd.silence_value ), 0 ), + IFNULL( MIN( wd.silence_value ), 0 ), + IFNULL( AVG( wd.silence_value ), 0 ), + IFNULL(MAX( wd.time_stamp ),NOW()), + MAX( CASE WHEN wd.rn = 1 THEN wd.data_value END ), + MAX( CASE WHEN wd.rn = 1 THEN wd.silence_value END ), + data_date, + #{orgCode,jdbcType=VARCHAR} + FROM + ( + SELECT + *, + ROW_NUMBER() OVER ( PARTITION BY bind_user_id, data_date ORDER BY time_stamp DESC ) AS rn + FROM + watch_data_heart_rate + WHERE + bind_user_id = #{userId,jdbcType=VARCHAR} + and data_date = #{dataDate,jdbcType=DATE} + ) wd + GROUP BY + wd.bind_user_id, + wd.data_date + ); + - update watch_stat_user_info_day_heart_rate stat - left join ( - select + UPDATE watch_stat_user_info_day_heart_rate stat + LEFT JOIN ( + SELECT + wd.bind_user_id, + wd.data_date, + IFNULL( MAX( wd.data_value ), 0 ) AS max_value, + IFNULL( MIN( wd.data_value ), 0 ) AS min_value, + IFNULL( AVG( wd.data_value ), 0 ) AS avg_value, + IFNULL( MAX( wd.silence_value ), 0 ) AS silence_max_value, + IFNULL( MIN( wd.silence_value ), 0 ) AS silence_min_value, + IFNULL( AVG( wd.silence_value ), 0 ) AS silence_avg_value, + IFNULL(MAX( wd.time_stamp ),NOW()) AS last_upload_time, + MAX( CASE WHEN wd.rn = 1 THEN wd.data_value END ) AS new_value, + MAX( CASE WHEN wd.rn = 1 THEN wd.silence_value END ) AS silence_new_value + FROM + ( SELECT *, ROW_NUMBER() OVER ( PARTITION BY bind_user_id, data_date ORDER BY time_stamp DESC ) AS rn FROM watch_data_heart_rate where bind_user_id = #{userId,jdbcType=VARCHAR} + and data_date = #{dataDate,jdbcType=DATE} ) wd + GROUP BY wd.bind_user_id, - ifnull(max(wd.data_value), 0) as max_value, - ifnull(min(wd.data_value), 0) as min_value, - ifnull(avg(wd.data_value), 0) as avg_value, - ifnull(max(wd.silence_value), 0) as silence_max_value, - ifnull(min(wd.silence_value), 0) as silence_min_value, - ifnull(avg(wd.silence_value), 0) as silence_avg_value, - ifnull(max(wd.time_stamp), NOW()) as last_upload_time, - latest.new_value, - latest.silence_new_value, wd.data_date - from watch_data_heart_rate wd - left join ( - select bind_user_id, data_date, data_value as new_value, silence_value as silence_new_value - from watch_data_heart_rate t1 - where (bind_user_id, data_date, time_stamp) in ( - select bind_user_id, data_date, max(time_stamp) - from watch_data_heart_rate - group by bind_user_id, data_date - ) - ) latest on wd.bind_user_id = latest.bind_user_id and wd.data_date = latest.data_date - where wd.bind_user_id = #{userId,jdbcType=VARCHAR} - and wd.data_date = #{dataDate,jdbcType=DATE} - group by wd.bind_user_id, wd.data_date, latest.new_value, latest.silence_new_value - ) data on stat.user_id = data.bind_user_id and stat.data_date = data.data_date - set stat.max_value = data.max_value, - stat.min_value = data.min_value, - stat.avg_value = data.avg_value, - stat.silence_max_value = data.silence_max_value, - stat.silence_min_value = data.silence_min_value, - stat.silence_avg_value = data.silence_avg_value, - stat.last_upload_time = data.last_upload_time, - stat.new_value = data.new_value, - stat.silence_new_value = IF(data.silence_new_value IS NULL OR data.silence_new_value = 0, stat.silence_new_value, data.silence_new_value), - stat.org_code = #{orgCode,jdbcType=VARCHAR} + ) DATA ON stat.user_id = DATA.bind_user_id + AND stat.data_date = DATA.data_date + SET stat.max_value = DATA.max_value, + stat.min_value = DATA.min_value, + stat.avg_value = DATA.avg_value, + stat.silence_max_value = DATA.silence_max_value, + stat.silence_min_value = DATA.silence_min_value, + stat.silence_avg_value = DATA.silence_avg_value, + stat.last_upload_time = DATA.last_upload_time, + stat.new_value = DATA.new_value, + stat.silence_new_value = COALESCE ( NULLIF( DATA.silence_new_value, 0 ), stat.silence_new_value ), + stat.org_code = #{orgCode,jdbcType=VARCHAR} where stat.user_id = #{userId,jdbcType=VARCHAR} - and stat.data_date = #{dataDate,jdbcType=DATE}; + and stat.data_date = #{dataDate,jdbcType=DATE}; \ No newline at end of file diff --git a/health-watch/health-watch-biz/src/main/java/com/renkang/watch/mapper/xml/WatchStatUserInfoDaySpo2Mapper.xml b/health-watch/health-watch-biz/src/main/java/com/renkang/watch/mapper/xml/WatchStatUserInfoDaySpo2Mapper.xml index 66f28aa..b32285d 100644 --- a/health-watch/health-watch-biz/src/main/java/com/renkang/watch/mapper/xml/WatchStatUserInfoDaySpo2Mapper.xml +++ b/health-watch/health-watch-biz/src/main/java/com/renkang/watch/mapper/xml/WatchStatUserInfoDaySpo2Mapper.xml @@ -36,54 +36,53 @@ group by user_id + - insert into watch_stat_user_info_day_spo2(id, user_id, max_value, min_value, avg_value, last_upload_time, new_value, data_date, org_code) - (select #{id,jdbcType=VARCHAR}, - bind_user_id, - ifnull(max(data_value), 0), - ifnull(min(data_value), 0), - ifnull(avg(data_value), 0), - ifnull(max(time_stamp), NOW()), - ifnull(data_value, 0), - data_date, - #{orgCode,jdbcType=VARCHAR} - from watch_data_spo2 - where bind_user_id = #{userId,jdbcType=VARCHAR} - and data_date = #{dataDate,jdbcType=DATE} - group by bind_user_id, data_date); + insert into watch_stat_user_info_day_spo2(id, user_id, max_value, min_value, avg_value, last_upload_time, + new_value, data_date, org_code) + (SELECT #{id,jdbcType=VARCHAR}, + bind_user_id, + IFNULL(MAX(wd.data_value), 0), + IFNULL(MIN(wd.data_value), 0), + IFNULL(AVG(wd.data_value), 0), + IFNULL(MAX(wd.time_stamp), 0), + MAX(CASE WHEN wd.rn = 1 THEN wd.data_value END), + data_date, + #{orgCode,jdbcType=VARCHAR} + FROM (SELECT *, ROW_NUMBER() OVER ( PARTITION BY bind_user_id, data_date ORDER BY time_stamp DESC ) AS rn + FROM watch_data_spo2 + where bind_user_id = #{userId,jdbcType=VARCHAR} + and data_date = #{dataDate,jdbcType=DATE}) wd + GROUP BY wd.bind_user_id, + wd.data_date); + - update watch_stat_user_info_day_spo2 stat - left join ( - select + UPDATE watch_stat_user_info_day_spo2 stat + LEFT JOIN ( + SELECT + wd.bind_user_id, + wd.data_date, + IFNULL( MAX( wd.data_value ), 0 ) AS max_value, + IFNULL( MIN( wd.data_value ), 0 ) AS min_value, + IFNULL( AVG( wd.data_value ), 0 ) AS avg_value, + IFNULL( MAX( wd.time_stamp ), 0 ) AS last_upload_time, + MAX( CASE WHEN wd.rn = 1 THEN wd.data_value END ) AS new_value + FROM + ( SELECT *, ROW_NUMBER() OVER ( PARTITION BY bind_user_id, data_date ORDER BY time_stamp DESC ) AS rn FROM watch_data_spo2 where bind_user_id = #{userId,jdbcType=VARCHAR} + and data_date = #{dataDate,jdbcType=DATE}) wd + GROUP BY wd.bind_user_id, - ifnull(max(wd.data_value), 0) as max_value, - ifnull(min(wd.data_value), 0) as min_value, - ifnull(avg(wd.data_value), 0) as avg_value, - ifnull(max(wd.time_stamp), 0) as last_upload_time, - latest.new_value, wd.data_date - from watch_data_spo2 wd - left join ( - select bind_user_id, data_date, data_value as new_value - from watch_data_spo2 t1 - where (bind_user_id, data_date, time_stamp) in ( - select bind_user_id, data_date, max(time_stamp) - from watch_data_spo2 - group by bind_user_id, data_date - ) - ) latest on wd.bind_user_id = latest.bind_user_id and wd.data_date = latest.data_date - where wd.bind_user_id = #{userId,jdbcType=VARCHAR} - and wd.data_date = #{dataDate,jdbcType=DATE} - group by wd.bind_user_id, wd.data_date, latest.new_value - ) data on stat.user_id = data.bind_user_id and stat.data_date = data.data_date - set stat.max_value = data.max_value, - stat.min_value = data.min_value, - stat.avg_value = data.avg_value, - stat.last_upload_time = data.last_upload_time, - stat.new_value = data.new_value, - stat.org_code = #{orgCode,jdbcType=VARCHAR} + ) DATA ON stat.user_id = DATA.bind_user_id + AND stat.data_date = DATA.data_date + SET stat.max_value = DATA.max_value, + stat.min_value = DATA.min_value, + stat.avg_value = DATA.avg_value, + stat.last_upload_time = DATA.last_upload_time, + stat.new_value = DATA.new_value, + stat.org_code = #{orgCode,jdbcType=VARCHAR} where stat.user_id = #{userId,jdbcType=VARCHAR} and stat.data_date = #{dataDate,jdbcType=DATE}; diff --git a/health-watch/health-watch-biz/src/main/java/com/renkang/watch/mapper/xml/WatchStatUserInfoDayStressMapper.xml b/health-watch/health-watch-biz/src/main/java/com/renkang/watch/mapper/xml/WatchStatUserInfoDayStressMapper.xml index d89eb45..4360bce 100644 --- a/health-watch/health-watch-biz/src/main/java/com/renkang/watch/mapper/xml/WatchStatUserInfoDayStressMapper.xml +++ b/health-watch/health-watch-biz/src/main/java/com/renkang/watch/mapper/xml/WatchStatUserInfoDayStressMapper.xml @@ -19,56 +19,58 @@ user_id=#{userId} - + insert into watch_stat_user_info_day_stress(id, user_id, max_value, min_value, avg_value, data_date, last_upload_time, new_value, org_code) - (select #{id,jdbcType=VARCHAR}, + ( + SELECT + #{id,jdbcType=VARCHAR}, bind_user_id, - ifnull(max(data_value), 0), - ifnull(min(data_value), 0), - ifnull(avg(data_value), 0), + IFNULL( MAX( wd.data_value ), 0 ), + IFNULL( MIN( wd.data_value ), 0 ), + IFNULL( AVG( wd.data_value ), 0 ), data_date, - ifnull(max(end_time_stamp), NOW()), - ifnull(data_value, 0), + IFNULL(MAX( wd.end_time_stamp ),NOW()), + MAX( CASE WHEN wd.rn = 1 THEN wd.data_value END ), #{orgCode,jdbcType=VARCHAR} - from watch_data_stress - where bind_user_id = #{userId,jdbcType=VARCHAR} - and data_date = #{dataDate,jdbcType=DATE} - group by bind_user_id, data_date); + FROM + ( SELECT *, ROW_NUMBER() OVER ( PARTITION BY bind_user_id, data_date ORDER BY end_time_stamp DESC ) AS rn FROM watch_data_stress + where bind_user_id = #{userId,jdbcType=VARCHAR} + and data_date = #{dataDate,jdbcType=DATE}) wd + GROUP BY + wd.bind_user_id, + wd.data_date + ); + - update watch_stat_user_info_day_stress stat - left join ( - select + UPDATE watch_stat_user_info_day_stress stat + LEFT JOIN ( + SELECT + wd.bind_user_id, + wd.data_date, + IFNULL( MAX( wd.data_value ), 0 ) AS max_value, + IFNULL( MIN( wd.data_value ), 0 ) AS min_value, + IFNULL( AVG( wd.data_value ), 0 ) AS avg_value, + IFNULL(MAX( wd.end_time_stamp ),NOW()) AS last_upload_time, + MAX( CASE WHEN wd.rn = 1 THEN wd.data_value END ) AS new_value + FROM + ( SELECT *, ROW_NUMBER() OVER ( PARTITION BY bind_user_id, data_date ORDER BY end_time_stamp DESC ) AS rn FROM watch_data_stress + where bind_user_id = #{userId,jdbcType=VARCHAR} + and data_date = #{dataDate,jdbcType=DATE}) wd + GROUP BY wd.bind_user_id, - ifnull(max(wd.data_value), 0) as max_value, - ifnull(min(wd.data_value), 0) as min_value, - ifnull(avg(wd.data_value), 0) as avg_value, - ifnull(max(wd.end_time_stamp), NOW()) as last_upload_time, - latest.new_value, wd.data_date - from watch_data_stress wd - left join ( - select bind_user_id, data_date, data_value as new_value - from watch_data_stress t1 - where (bind_user_id, data_date, end_time_stamp) in ( - select bind_user_id, data_date, max(end_time_stamp) - from watch_data_stress - group by bind_user_id, data_date - ) - ) latest on wd.bind_user_id = latest.bind_user_id and wd.data_date = latest.data_date - where wd.bind_user_id = #{userId,jdbcType=VARCHAR} - and wd.data_date = #{dataDate,jdbcType=DATE} - group by wd.bind_user_id, wd.data_date, latest.new_value - ) data on stat.user_id = data.bind_user_id and stat.data_date = data.data_date - set stat.max_value = data.max_value, - stat.min_value = data.min_value, - stat.avg_value = data.avg_value, - stat.last_upload_time = data.last_upload_time, - stat.new_value = data.new_value, - stat.org_code = #{orgCode,jdbcType=VARCHAR} - where stat.user_id = #{userId,jdbcType=VARCHAR} - and stat.data_date = #{dataDate,jdbcType=DATE}; + ) DATA ON stat.user_id = DATA.bind_user_id + AND stat.data_date = DATA.data_date + SET stat.max_value = DATA.max_value, + stat.min_value = DATA.min_value, + stat.avg_value = DATA.avg_value, + stat.last_upload_time = DATA.last_upload_time, + stat.new_value = DATA.new_value, + stat.org_code = #{orgCode,jdbcType=VARCHAR} + where stat.user_id = #{userId,jdbcType=VARCHAR} + and stat.data_date = #{dataDate,jdbcType=DATE}; \ No newline at end of file diff --git a/health-watch/health-watch-biz/src/main/java/com/renkang/watch/mapper/xml/WatchStatUserInfoDayTempMapper.xml b/health-watch/health-watch-biz/src/main/java/com/renkang/watch/mapper/xml/WatchStatUserInfoDayTempMapper.xml index faed779..92acf79 100644 --- a/health-watch/health-watch-biz/src/main/java/com/renkang/watch/mapper/xml/WatchStatUserInfoDayTempMapper.xml +++ b/health-watch/health-watch-biz/src/main/java/com/renkang/watch/mapper/xml/WatchStatUserInfoDayTempMapper.xml @@ -34,68 +34,70 @@ order by data_date + insert into watch_stat_user_info_day_temp(id, user_id, max_value, min_value, avg_value, skin_max_value, - skin_min_value, skin_avg_value, last_upload_time, new_value, skin_new_value, data_date, org_code) - (select #{id,jdbcType=VARCHAR}, - bind_user_id, - ifnull(max(data_value), 0), - ifnull(min(data_value), 0), - ifnull(avg(data_value), 0), - ifnull(max(skin_tempera), 0), - ifnull(min(skin_tempera), 0), - ifnull(avg(skin_tempera), 0), - ifnull(max(time_stamp), NOW()), - ifnull(data_value, 0), - ifnull(skin_tempera, 0), - data_date, - #{orgCode,jdbcType=VARCHAR} - from watch_data_temperature - where bind_user_id = #{userId,jdbcType=VARCHAR} - and data_date = #{dataDate,jdbcType=DATE} - group by bind_user_id, data_date); + skin_min_value, skin_avg_value, last_upload_time, new_value, + skin_new_value, data_date, org_code) + (SELECT #{id,jdbcType=VARCHAR}, + bind_user_id, + IFNULL(MAX(wd.data_value), 0), + IFNULL(MIN(wd.data_value), 0), + IFNULL(AVG(wd.data_value), 0), + IFNULL(MAX(wd.skin_tempera), 0), + IFNULL(MIN(wd.skin_tempera), 0), + IFNULL(AVG(wd.skin_tempera), 0), + IFNULL(MAX(wd.time_stamp), NOW()), + MAX(CASE WHEN wd.rn = 1 THEN wd.data_value END), + MAX(CASE WHEN wd.rn = 1 THEN wd.skin_tempera END), + data_date, + #{orgCode,jdbcType=VARCHAR} + FROM (SELECT *, ROW_NUMBER() OVER ( PARTITION BY bind_user_id, data_date ORDER BY time_stamp DESC ) AS rn + FROM watch_data_temperature + where bind_user_id = #{userId,jdbcType=VARCHAR} + and data_date = #{dataDate,jdbcType=DATE}) wd + GROUP BY wd.bind_user_id, + wd.data_date); + - update watch_stat_user_info_day_temp stat - left join ( - select + UPDATE watch_stat_user_info_day_temp stat + LEFT JOIN ( + SELECT + wd.bind_user_id, + wd.data_date, + IFNULL( MAX( wd.data_value ), 0 ) AS max_value, + IFNULL( MIN( wd.data_value ), 0 ) AS min_value, + IFNULL( AVG( wd.data_value ), 0 ) AS avg_value, + IFNULL( MAX( wd.skin_tempera ), 0 ) AS skin_max_value, + IFNULL( MIN( wd.skin_tempera ), 0 ) AS skin_min_value, + IFNULL( AVG( wd.skin_tempera ), 0 ) AS skin_avg_value, + IFNULL( + MAX( wd.time_stamp ), + NOW()) AS last_upload_time, + MAX( CASE WHEN wd.rn = 1 THEN wd.data_value END ) AS new_value, + MAX( CASE WHEN wd.rn = 1 THEN wd.skin_tempera END ) AS skin_new_value + FROM + ( SELECT *, ROW_NUMBER() OVER ( PARTITION BY bind_user_id, data_date ORDER BY time_stamp DESC ) AS rn FROM watch_data_temperature + where bind_user_id = #{userId,jdbcType=VARCHAR} + and data_date = #{dataDate,jdbcType=DATE}) wd + GROUP BY wd.bind_user_id, - ifnull(max(wd.data_value), 0) as max_value, - ifnull(min(wd.data_value), 0) as min_value, - ifnull(avg(wd.data_value), 0) as avg_value, - ifnull(max(wd.skin_tempera), 0) as skin_max_value, - ifnull(min(wd.skin_tempera), 0) as skin_min_value, - ifnull(avg(wd.skin_tempera), 0) as skin_avg_value, - ifnull(max(wd.time_stamp), NOW()) as last_upload_time, - latest.new_value, - latest.skin_new_value, wd.data_date - from watch_data_temperature wd - left join ( - select bind_user_id, data_date, data_value as new_value, skin_tempera as skin_new_value - from watch_data_temperature t1 - where (bind_user_id, data_date, time_stamp) in ( - select bind_user_id, data_date, max(time_stamp) - from watch_data_temperature - group by bind_user_id, data_date - ) - ) latest on wd.bind_user_id = latest.bind_user_id and wd.data_date = latest.data_date - where wd.bind_user_id = #{userId,jdbcType=VARCHAR} - and wd.data_date = #{dataDate,jdbcType=DATE} - group by wd.bind_user_id, wd.data_date, latest.new_value, latest.skin_new_value - ) data on stat.user_id = data.bind_user_id and stat.data_date = data.data_date - set stat.max_value = data.max_value, - stat.min_value = data.min_value, - stat.avg_value = data.avg_value, - stat.skin_max_value = data.skin_max_value, - stat.skin_min_value = data.skin_min_value, - stat.skin_avg_value = data.skin_avg_value, - stat.last_upload_time = data.last_upload_time, - stat.new_value = data.new_value, - stat.skin_new_value = IF(data.skin_new_value IS NULL OR data.skin_new_value = 0, stat.skin_new_value, data.skin_new_value), - stat.org_code = #{orgCode,jdbcType=VARCHAR} - where stat.user_id = #{userId,jdbcType=VARCHAR} - and stat.data_date = #{dataDate,jdbcType=DATE}; + ) DATA ON stat.user_id = DATA.bind_user_id + AND stat.data_date = DATA.data_date + SET stat.max_value = DATA.max_value, + stat.min_value = DATA.min_value, + stat.avg_value = DATA.avg_value, + stat.skin_max_value = DATA.skin_max_value, + stat.skin_min_value = DATA.skin_min_value, + stat.skin_avg_value = DATA.skin_avg_value, + stat.last_upload_time = DATA.last_upload_time, + stat.new_value = DATA.new_value, + stat.skin_new_value = COALESCE ( NULLIF( DATA.skin_new_value, 0 ), stat.skin_new_value ), + stat.org_code = #{orgCode,jdbcType=VARCHAR} + where stat.user_id = #{userId,jdbcType=VARCHAR} + and stat.data_date = #{dataDate,jdbcType=DATE};