MySQL HIGHEST / LOWEST 5 из ряда данных - PullRequest
0 голосов
/ 14 декабря 2010

У меня есть следующий запрос:

SELECT AVG(q1) AS q1, AVG (q2) AS q2, AVG(q3) AS q3, AVG(q4) AS q4, AVG(q5) AS q5 FROM tresults_acme

q1    q2    q3    q4    q5
8.23  5.23  7.65  8.00  7.99

Этот запрос возвращает одну строку данных, озаглавленную q1, q2, q3, q4, q5 - возможно ли в MySQL просто показать два старших(q1 & q4) или Lowest two (q2 & q3) - если не в MySQL это можно сделать через PHP?

Заранее спасибо,

Гомер.

1 Ответ

2 голосов
/ 14 декабря 2010

Вы можете использовать процедуру, но вот простой способ сделать это на SQL:

    select greatest(q1,q2,q3,q4,q5) as highest_1,
           least( greatest(q1,q2,q3,q4),
                  greatest(q1,q2,q3,q5),
                  greatest(q1,q2,q4,q5),
                  greatest(q1,q3,q4,q5),
                  greatest(q2,q3,q4,q5) ) as highest_2
    from ( SELECT AVG(q1) AS q1, 
                  AVG(q2) AS q2, 
                  AVG(q3) AS q3, 
                  AVG(q4) AS q4, 
                  AVG(q5) AS q5 
           FROM tresults_acme ) t;

протестировано с:

create view tresults_acme as select 1 as q1, 2 as q2, 3 as q3, 4 as q4, 5 as q5;

результат:

         highest_1      |     highest_2
    --------------------+--------------------
     5.0000000000000000 | 4.0000000000000000
...