表如下:
id a1 a2 a3 a4 a5
-----------------------
a  1  2  3  4  5
b  2  3  4  5  6
请高手指点怎么用SQL实现下结果id a1 a2 a3 a4 a5 max min  结果
------------------------------
a  1  2  3  4  5   5  1     3   // 结果=(a1+a2+a3+a4+a5-max-min)/3
b  2  3  4  5  6   6  2     4

解决方案 »

  1.   

    为什么一切都要用sql完成?这种思路并不好。
      

  2.   

    select id,
           a1,
           a2,
           a3,
           a4,
           a5,
           (case when a5>(case when (case when a1>a2 then a1 else a2 end)>(case whne a3>a4 then a3 else a4 end) then (case when a1>a2 then a1 else a2 end) else (case whne a3>a4 then a3 else a4 end) end) then a5 else (case when (case when a1>a2 then a1 else a2 end)>(case whne a3>a4 then a3 else a4 end) then (case when a1>a2 then a1 else a2 end) else (case whne a3>a4 then a3 else a4 end) end) end) as max,
           (case when a5<(case when (case when a1<a2 then a1 else a2 end)<(case whne a3<a4 then a3 else a4 end) then (case when a1<a2 then a1 else a2 end) else (case whne a3<a4 then a3 else a4 end) end) then a5 else (case when (case when a1<a2 then a1 else a2 end)<(case whne a3<a4 then a3 else a4 end) then (case when a1<a2 then a1 else a2 end) else (case whne a3<a4 then a3 else a4 end) end) end) as min,
           a1+a2+a3+a4+a5-(case when a5>(case when (case when a1>a2 then a1 else a2 end)>(case whne a3>a4 then a3 else a4 end) then (case when a1>a2 then a1 else a2 end) else (case whne a3>a4 then a3 else a4 end) end) then a5 else (case when (case when a1>a2 then a1 else a2 end)>(case whne a3>a4 then a3 else a4 end) then (case when a1>a2 then a1 else a2 end) else (case whne a3>a4 then a3 else a4 end) end) end)-(case when a5<(case when (case when a1<a2 then a1 else a2 end)<(case whne a3<a4 then a3 else a4 end) then (case when a1<a2 then a1 else a2 end) else (case whne a3<a4 then a3 else a4 end) end) then a5 else (case when (case when a1<a2 then a1 else a2 end)<(case whne a3<a4 then a3 else a4 end) then (case when a1<a2 then a1 else a2 end) else (case whne a3<a4 then a3 else a4 end) end) end) as 结果
    from 表名