|
@@ -11,72 +11,121 @@ import json
|
|
|
def get_rain_township(db,rn):
|
|
|
resutl = []
|
|
|
sql = text(f"""
|
|
|
- SELECT T1.`name`,IFNULL(T2.num,0)as num FROM (SELECT '特大暴雨(>200)' as `name` union all
|
|
|
-SELECT '大暴雨(100-200)' as `name` union all
|
|
|
-SELECT '暴雨(50-100)' as `name` union all
|
|
|
-SELECT '大雨(25-50)' as `name` union all
|
|
|
-SELECT '中雨(10-25)' as `name` union all
|
|
|
-SELECT '小雨(<10)' as `name` )T1 left join (
|
|
|
- SELECT IFNULL(CASE
|
|
|
- WHEN rainfall>0 and rainfall<10 THEN
|
|
|
- '小雨(<10)'
|
|
|
- WHEN rainfall>=10 and rainfall<25 THEN
|
|
|
- '中雨(10-25)'
|
|
|
- WHEN rainfall>=25 and rainfall<50 THEN
|
|
|
- '大雨(25-50)'
|
|
|
- WHEN rainfall>=50 and rainfall<100 THEN
|
|
|
- '暴雨(50-100)'
|
|
|
- WHEN rainfall>=100 and rainfall<200 THEN
|
|
|
- '大暴雨(100-200)'
|
|
|
- WHEN rainfall>=200 THEN
|
|
|
- '特大暴雨(>200)'
|
|
|
- ELSE
|
|
|
- '0'
|
|
|
-END,'0') as `name` ,COUNT(1) as `num` FROM (
|
|
|
-SELECT
|
|
|
- `latest_data`.`township` AS `township`,
|
|
|
- SUM(`latest_data`.`rainfall`) AS `rainfall`
|
|
|
-FROM (
|
|
|
- SELECT
|
|
|
- a.`code`,
|
|
|
- MAX(a.`area_name`) AS `area_name`,
|
|
|
- MAX(a.`update_time`) AS `update_time`,
|
|
|
- MAX(a.`address`) AS `address`,
|
|
|
- b.`township`,
|
|
|
- a.`create_time`,
|
|
|
- AVG(a.`rainfall`) AS `rainfall`,
|
|
|
- ROW_NUMBER() OVER (PARTITION BY a.`code` ORDER BY a.`create_time` DESC) AS `rn`
|
|
|
- FROM
|
|
|
- sharedb.`govdata_rain_data_info` a
|
|
|
- LEFT JOIN
|
|
|
- sharedb.`govdata_real_time_address` b ON a.`code` = b.`code`
|
|
|
- WHERE
|
|
|
- a.`address` LIKE '%茂名%'
|
|
|
- GROUP BY
|
|
|
- a.`code`, b.`township`, a.`create_time`
|
|
|
-) `latest_data`
|
|
|
-WHERE
|
|
|
- `latest_data`.`rn` = {rn}
|
|
|
-GROUP BY
|
|
|
- `latest_data`.`township`
|
|
|
-ORDER BY
|
|
|
- `rainfall` DESC
|
|
|
-)A GROUP BY IFNULL(CASE
|
|
|
- WHEN rainfall>0 and rainfall<10 THEN
|
|
|
- '小雨(<10)'
|
|
|
- WHEN rainfall>=10 and rainfall<25 THEN
|
|
|
- '中雨(10-25)'
|
|
|
- WHEN rainfall>=25 and rainfall<50 THEN
|
|
|
- '大雨(25-50)'
|
|
|
- WHEN rainfall>=50 and rainfall<100 THEN
|
|
|
- '暴雨(50-100)'
|
|
|
- WHEN rainfall>=100 and rainfall<200 THEN
|
|
|
- '大暴雨(100-200)'
|
|
|
- WHEN rainfall>=200 THEN
|
|
|
- '特大暴雨(>200)'
|
|
|
- ELSE
|
|
|
- '0'
|
|
|
-END,'0'))T2 on T1.`name`=T2.`name`;
|
|
|
+ SELECT
|
|
|
+ T1.`name`,
|
|
|
+ IFNULL(T2.num, 0) AS num
|
|
|
+FROM
|
|
|
+ (
|
|
|
+ SELECT
|
|
|
+ '特大暴雨(>250)' AS `name`
|
|
|
+ UNION ALL
|
|
|
+ SELECT
|
|
|
+ '大暴雨(100-250)' AS `name`
|
|
|
+ UNION ALL
|
|
|
+ SELECT
|
|
|
+ '暴雨(50-100)' AS `name`
|
|
|
+ UNION ALL
|
|
|
+ SELECT
|
|
|
+ '大雨(25-50)' AS `name`
|
|
|
+ UNION ALL
|
|
|
+ SELECT
|
|
|
+ '中雨(10-25)' AS `name`
|
|
|
+ UNION ALL
|
|
|
+ SELECT
|
|
|
+ '小雨(0.1-10)' AS `name`
|
|
|
+ ) T1
|
|
|
+LEFT JOIN (
|
|
|
+ SELECT
|
|
|
+ IFNULL(
|
|
|
+ CASE
|
|
|
+ WHEN rainfall > 0
|
|
|
+ AND rainfall < 10 THEN
|
|
|
+ '小雨(0.1-10)'
|
|
|
+ WHEN rainfall >= 10
|
|
|
+ AND rainfall < 25 THEN
|
|
|
+ '中雨(10-25)'
|
|
|
+ WHEN rainfall >= 25
|
|
|
+ AND rainfall < 50 THEN
|
|
|
+ '大雨(25-50)'
|
|
|
+ WHEN rainfall >= 50
|
|
|
+ AND rainfall < 100 THEN
|
|
|
+ '暴雨(50-100)'
|
|
|
+ WHEN rainfall >= 100
|
|
|
+ AND rainfall < 250 THEN
|
|
|
+ '大暴雨(100-250)'
|
|
|
+ WHEN rainfall >= 250 THEN
|
|
|
+ '特大暴雨(>250)'
|
|
|
+ ELSE
|
|
|
+ '无雨'
|
|
|
+ END,
|
|
|
+ '无雨'
|
|
|
+ ) AS `name`,
|
|
|
+ COUNT(1) AS `num`
|
|
|
+ FROM
|
|
|
+ (
|
|
|
+ SELECT
|
|
|
+ `latest_data`.`code` AS `code`,
|
|
|
+ sum(`latest_data`.`rainfall`) AS `rainfall`
|
|
|
+ FROM
|
|
|
+ (
|
|
|
+ SELECT
|
|
|
+ `govdata_rain_data_info`.`code` AS `code`,
|
|
|
+ `govdata_rain_data_info`.`area_name` AS `area_name`,
|
|
|
+ `govdata_rain_data_info`.`address` AS `address`,
|
|
|
+ `govdata_rain_data_info`.`create_time` AS `create_time`,
|
|
|
+ `govdata_rain_data_info`.`rainfall` AS `rainfall`,
|
|
|
+ `govdata_rain_data_info`.`update_time` AS `update_time`,
|
|
|
+ row_number () OVER (
|
|
|
+ PARTITION BY `govdata_rain_data_info`.`code`
|
|
|
+ ORDER BY
|
|
|
+ `govdata_rain_data_info`.`create_time` DESC
|
|
|
+ ) AS `rn`
|
|
|
+ FROM
|
|
|
+ sharedb.`govdata_rain_data_info`
|
|
|
+ ) `latest_data`
|
|
|
+ WHERE
|
|
|
+ (
|
|
|
+ (
|
|
|
+ `latest_data`.`rn` <= {rn}
|
|
|
+ )
|
|
|
+ AND `latest_data`.`code` IN (
|
|
|
+ SELECT
|
|
|
+ `govdata_real_time_address`.`code`
|
|
|
+ FROM
|
|
|
+ sharedb.`govdata_real_time_address`
|
|
|
+ )
|
|
|
+ )
|
|
|
+ GROUP BY
|
|
|
+ `latest_data`.`code`
|
|
|
+ ORDER BY
|
|
|
+ `rainfall` DESC
|
|
|
+ ) A
|
|
|
+ GROUP BY
|
|
|
+ IFNULL(
|
|
|
+ CASE
|
|
|
+ WHEN rainfall > 0
|
|
|
+ AND rainfall < 10 THEN
|
|
|
+ '小雨(0.1-10)'
|
|
|
+ WHEN rainfall >= 10
|
|
|
+ AND rainfall < 25 THEN
|
|
|
+ '中雨(10-25)'
|
|
|
+ WHEN rainfall >= 25
|
|
|
+ AND rainfall < 50 THEN
|
|
|
+ '大雨(25-50)'
|
|
|
+ WHEN rainfall >= 50
|
|
|
+ AND rainfall < 100 THEN
|
|
|
+ '暴雨(50-100)'
|
|
|
+ WHEN rainfall >= 100
|
|
|
+ AND rainfall < 250 THEN
|
|
|
+ '大暴雨(100-250)'
|
|
|
+ WHEN rainfall >= 250 THEN
|
|
|
+ '特大暴雨(>250)'
|
|
|
+ ELSE
|
|
|
+ '无雨'
|
|
|
+ END,
|
|
|
+ '无雨'
|
|
|
+ )
|
|
|
+) T2 ON T1.`name` = T2.`name`;
|
|
|
""")
|
|
|
|
|
|
sqlresult = db.execute(sql)
|
|
@@ -111,9 +160,10 @@ def get_forest_max_time(db):
|
|
|
def get_max_rain_township(db):
|
|
|
resutl = []
|
|
|
sql = text(f"""
|
|
|
- SELECT area_name,township,rn
|
|
|
+ SELECT name1,area_name,township,rainfall
|
|
|
FROM (
|
|
|
SELECT
|
|
|
+ b.`area_name` as `name1`,
|
|
|
a.`code`,
|
|
|
MAX(a.`area_name`) AS `area_name`,
|
|
|
MAX(a.`update_time`) AS `update_time`,
|
|
@@ -129,7 +179,7 @@ FROM (
|
|
|
WHERE
|
|
|
a.`address` LIKE '%茂名%'
|
|
|
GROUP BY
|
|
|
- a.`code`, b.`township`, a.`create_time`
|
|
|
+ b.`area_name`,a.`code`, b.`township`, a.`create_time`
|
|
|
) AS latest_data
|
|
|
WHERE
|
|
|
latest_data.`rn` = 1
|
|
@@ -142,9 +192,10 @@ LIMIT 1;
|
|
|
for i in sqlresult:
|
|
|
print(i)
|
|
|
resutl.append({
|
|
|
- 'area_name':i[0],
|
|
|
- 'township':i[1],
|
|
|
- 'rn':i[2]
|
|
|
+ 'name':i[0],
|
|
|
+ 'area_name':i[1],
|
|
|
+ 'township':i[2],
|
|
|
+ 'rainfall':i[3]
|
|
|
})
|
|
|
return resutl
|
|
|
|