MySQL取出N列里最大or最小的一个数据

本文介绍了如何使用SQL查询从infrared_heat表中的三列数字类型数据中分别获取最小值和最大值,同时展示了如何结合时间范围和分组操作来找到特定时间段内每组的最大值。最后还提到如何在原始数据中添加最大值列以便进一步分析。

如题,现在有3列,都是数字类型,要取出这3列里最大或最小的的一个数字

-- N列取最小
SELECT 
LEAST(temperature_a,temperature_b,temperature_c) min
FROM infrared_heat

-- N列取最大
SELECT 
GREATEST(temperature_a,temperature_b,temperature_c) max
FROM infrared_heat

(注意:是3列! 不是3行! 3行直接用max() min()函数就行...)


实际应用, 取出3列中某个值最大的那一数据 :

SELECT *	
FROM infrared_heat a,
(
    SELECT MAX(max) max,station_name,device_name,location
		FROM
		(
			SELECT 
			GREATEST(temperature_a,temperature_b,temperature_c) max -- 取出3列最大值
			,station_name,device_name,location
			FROM infrared_heat
			WHERE test_date >='2024-1-1' and test_date<'2024-1-31'
		) temp
    GROUP BY station_name,device_name,location
)b
WHERE a.test_date >='2024-1-1' and a.test_date<'2024-1-31'
and a.station_name=b.station_name and a.device_name=b.device_name and a.location=b.location
and GREATEST(a.temperature_a,a.temperature_b,a.temperature_c)=b.max -- 3列最大值

原始的数据,添加一个3列的最大值列max:

取出3列最大值后,再分组(group by)后的数据, 查询的结果外面还要套一层用于取出max对应的uid:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值