2012-06-08 25 views
6

Mam tabelę PostgreSQL z kilkoma debilami, przechowują wartości procentowe. więc powiedzmy, że kolumny są:Kolejność SQL według najwyższej wartości dwóch kolumn

pc_1 
pc_2 

Co chcę jest zamówienie przez którykolwiek z tych dwóch kolumn ma największą ilość malejąco, a następnie przez drugą kolumnę, ponownie malejącej.

Więc jeśli nasze dane jest powiedzieć:

id pc_1 pc_2 
1 12.5 11.0 
2 10.0 13.2 
3 13.2 9.0 

select * from mojatabela zamówienia przez <something> dałby:

2 10.0 13.2 
3 13.2 9.0 
1 12.5 11.0 

Odpowiedz

16
SELECT * 
FROM mytable 
ORDER BY 
     GREATEST(pc_1, pc_2) DESC, LEAST(pc_1, pc_2) DESC 
+0

Huh, nie wiem tęskniłem największym i najmniej przez te wszystkie lata. Dzięki! –

+1

Należy zauważyć, że "NAJWYŻSZY" i "NAJCZĘŚCIEJ" nie są standardowym językiem SQL. – Charles

4
select * 
from mytable 
order by 
case when pc_1 > pc_2 then pc_1 else pc_2 end desc, 
case when pc_1 > pc_2 then pc_2 else pc_1 end desc 
Powiązane problemy