id, mn_code, lst, day_avg, min, max, day_online, day_valid, day_exceeding, type
insert into dust_statistics_value(mn_code,lst,day_avg,min,max,day_online,day_valid,day_exceeding,type)
select a.*
from (select
mn_code as mn_code,
DATE(lst) as lst,
ROUND(AVG(dust_value),3) as day_avg,
min(dust_value) as min,
max(dust_value) as max,
CONCAT(ROUND(COUNT(*)/96*100, 2), '%') as day_online,
CONCAT(ROUND(SUM(CASE WHEN dust_value >0 THEN 1 ELSE 0 END)/96 *100, 2), '%') as day_valid,
CONCAT(ROUND(SUM(CASE WHEN dust_value >= 1 THEN 1 ELSE 0 END)/96*100,2),'%') as day_exceeding,
'day' as type
from ja_t_dust_site_data_info
where lst between #{beginTime} and #{endTime}
GROUP BY mn_code,DATE(lst)
) as a
insert into dust_statistics_value(mn_code,lst,day_avg,min,max,day_online,day_valid,day_exceeding,type)
select a.*
from (
SELECT
mn_code AS mn_code,
DATE_FORMAT(lst, '%Y-%m-01') AS month,
ROUND(AVG(dust_value), 3) AS month_avg,
MIN(dust_value) AS min,
MAX(dust_value) AS max,
CONCAT(ROUND(COUNT(*) / #{count} * 100, 2), '%') AS month_online,
CONCAT(ROUND(SUM(CASE WHEN flag = 'N' OR flag = 'A' THEN 1 ELSE 0 END) / #{count} * 100, 2), '%') AS month_valid,
CONCAT(ROUND(SUM(CASE WHEN dust_value >= 1 THEN 1 ELSE 0 END) / #{count} * 100, 2), '%') AS month_exceeding,
'month' as type
FROM ja_t_dust_site_data_info
WHERE lst BETWEEN #{beginTime} and #{endTime}
GROUP BY mn_code, DATE_FORMAT(lst, '%Y-%m-01')
) as a