SQL多列查询最大值
直接从某一列查询出最大值或最小值很容易,通过group by字句对合适的列进行聚合操作,再使用max()/min()聚合函数就可以求出。
样本数据如下:
key_id | x | y | z |
A | 1 | 2 | 3 |
B | 5 | 5 | 2 |
C | 4 | 7 | 1 |
D | 3 | 3 | 8 |
求查询每个key的最大值,展示结果如下:
key_id | col |
A | 3 |
B | 5 |
C | 7 |
D | 8 |
方案一:
对于列数不是很多的可以用case when语句,
select key_id,
case when
case when x > y then x else y end < z then z
else case when x < y then y else x end
end as gre
from sherry.greatests
方案二:
如果有4列,5列可以先转为行数据再用聚合函数求,
select key_id, max(col) from
(select key_id, x as col from sherry.greatests
union all
select key_id, y as col from sherry.greatests
union all
select key_id, z as col from sherry.greatests) as foo
group by key_id