【发布时间】:2026-01-09 20:15:01
【问题描述】:
简介
嗨,
我有一个气象站,每半小时记录一次当前天气。
在其他传感器中,它有一个温度计。这是本次调查的主题。
我已经总结了表格的字段,但请注意HiTemp 字段存储最高温度。
情况
在 SQL 查询中给出以下表结构
CREATE TABLE weather (
Id INT AUTO_INCREMENT PRIMARY KEY,
HiTemp FLOAT,
Date VARCHAR(8),
Time VARCHAR(5),
Epoch BIGINT
);
请注意 HiTemp 以摄氏度存储,Date 遵循 dd/mm/YY 格式,Time 以 CET (GMT+1) 时区存储
因此,样本记录将是..
1, 19, "13/12/19", "13:00", 1576238400
我的目标是对记录进行排序,并在表中的其他字段中找到 HiTemp 的最大值。
要查找唯一年份,Date 上的简单子字符串可以正常工作
SELECT SUBSTR(Date, -2) AS Year FROM weather GROUP BY Year;
多年来,我一直在考虑使用PROCEDURE(函数)来使用某种循环
这里的这个查询是我自己能够弄清楚的最接近我的目标的查询
SELECT MAX(HiTemp) MaxTemp, SUBSTR(Date, -2) Year, Date, Time FROM weather GROUP BY Year;
这里的问题是,据我所知MAX 是一个组函数,而其他选定的字段与其值无关
然而,该查询的输出将具有如下格式
40.1, 19, "28/06/19", "17:00"
37.5, 18, "04/08/18", "14:00"
35.5, 17, "05/08/17", "15:30"
请注意这些记录是正确的,因为生成的选定字段属于同一记录(它们是精心挑选的)
有什么想法吗?子查询、联接、过程.. 对此的任何见解都非常感谢,我现在很迷茫。
谢谢。
【问题讨论】:
-
这是 40,1, 37.5 的列 .. 不清楚 ..
-
使用适当的日期数据类型存储日期。
-
@scaisEdge 即温度,请看上面的查询字段参考