同じカラムの最大値を取るときにはMAXが使えますが、複数のカラムにまたがった値の最大値を取るにはGREATESTが使えます。
select GREATEST(a, b, c, d) from hoge_table
a,b,c,dの部分は数字だけじゃなくて時間とかでもいけます。
最小値を取るときにはLEASTが使えます。
select LEAST(a, b, c, d) from hoge_table
しかしa,b,c,dのどれかがnullだと結果がnullで返ってきてしまって残念。気を利かせてほしかった。