【SQL實戰】一條SQL統計全國各地疫情分布情況


 

 

 

-- 疫情表,三個字段:城市/地區 省份 當前確診人數
DROP TABLE IF EXISTS yiqing;
CREATE TABLE `datacenter`.`yiqing`(
`city` VARCHAR(32) COMMENT '城市/地區',
`province` VARCHAR(32) COMMENT '省份',
`current` INT COMMENT '當前確認人數'
)
COMMENT='疫情信息表';

INSERT INTO yiqing
SELECT '津南區', '天津', 217 UNION ALL
SELECT '安陽', '陝西', 110 UNION ALL
SELECT '西安', '陝西', 1385 UNION ALL
SELECT '咸陽', '河南', 10 UNION ALL
SELECT '鄭州', '河南', 138 UNION ALL
SELECT '南陽', '河南', 95 UNION ALL
SELECT '呼倫貝爾', '內蒙古', 5 UNION ALL
SELECT '寧波', '浙江', 55 UNION ALL
SELECT '開封', '河南', 5 UNION ALL
SELECT '金華', '浙江', 3 UNION ALL
SELECT '防城港', '廣西', 2 UNION ALL
SELECT '中山', '廣東', 51 UNION ALL
SELECT '大連', '遼寧', 3 ;

SELECT * FROM yiqing ORDER BY 2,1;

 

 

-- §§§【統計全國疫情分布情況 結果列:省份、嚴重程度級別、累計確診人數】
SELECT province AS '省份'
, CASE WHEN SUM(current)>=100 THEN 'Level1' WHEN SUM(current)<100 AND SUM(current)>=50 THEN 'Level2' ELSE 'Levy3' END AS '嚴重程度'
, SUM(current) AS '累計確認人數'
FROM yiqing
GROUP BY province
ORDER BY 3 DESC;

 

 

-- §§§【統計各省份疫情分布情況 結果列:省份、疫情風險等級、城市地區數、當前確診數。例如:河南省有3個高風險城市,確診人數總計300人】
SELECT province AS '省份'
, CASE WHEN current>=100 THEN '高'
WHEN current>=50 AND current<100 THEN '中'
ELSE '低' END AS '疫情風險等級'
, COUNT(1) AS '城市地區數'
, SUM(current) AS '當前確診數'
FROM yiqing
GROUP BY province, CASE WHEN current>=100 THEN '高'
WHEN current>=50 AND current<100 THEN '中'
ELSE '低' END
ORDER BY 1, CASE 疫情風險等級 WHEN '高' THEN 1 WHEN '中' THEN 2 ELSE 3 END;

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM