Oracle数据库SQL查询:将温度、降雨量转换为公制单位展示
Oracle 城市月度温湿度单位转换查询方案
单位转换逻辑(常见场景)
先明确最常用的单位转换公式,你可以根据实际原始单位调整:
- 温度:若原始单位是华氏度(°F),转摄氏度(°C)的公式为:
(temperature - 32) * 5 / 9 - 降雨量:若原始单位是毫米(mm),转厘米(cm)的公式为:
rainfall / 10
假设表结构
基于常见气象数据结构做合理假设(你可根据实际表字段调整):
station表:存储站点与城市对应关系,包含station_id(站点ID)、city_name(城市名称)stats表:存储月度气象统计,包含station_id(关联站点)、record_month(统计月份,DATE类型)、temperature(原始温度)、rainfall(原始降雨量)
最终查询语句
SELECT s.city_name AS 城市名称, TO_CHAR(st.record_month, 'YYYY-MM') AS 统计月份, -- 华氏转摄氏,保留2位小数 ROUND((st.temperature - 32) * 5 / 9, 2) AS 温度_摄氏度, -- 毫米转厘米,保留2位小数 ROUND(st.rainfall / 10, 2) AS 降雨量_厘米 FROM station s INNER JOIN stats st ON s.station_id = st.station_id -- 按城市和月份排序,方便查看 ORDER BY s.city_name, TO_CHAR(st.record_month, 'YYYY-MM');
关键说明
- 表关联:用
INNER JOIN通过station_id把城市名称和对应气象数据关联,确保每个统计数据都能匹配到所属城市 - 月份格式化:
TO_CHAR(st.record_month, 'YYYY-MM')将日期类型的月份转换成易读的年月字符串 - 数值格式化:
ROUND(..., 2)对转换后的数值保留2位小数,避免过多小数位影响可读性 - 单位适配:如果原始温度/降雨量单位不是华氏/毫米,直接替换公式即可。比如开尔文转摄氏用
temperature - 273.15,英寸转厘米用rainfall * 2.54
内容的提问来源于stack exchange,提问作者shubham gautam
相关产品推荐
相关产品推荐

