Sortowanie wyników

Możliwość sortowania wyników jest moim zdaniem równie istotna jak opcja filtrowania.
Użytkownika z reguły interesuje od 1 do 100 wierszy wyników, warto więc zadbać by były one posortowane w sposób odpowiadający jego oczekiwaniom.

Mamy dwie główne metody sortowania wyników Ascending i Descending co znaczy odpowiednio rosnąco i malejąco,
odpowiadają za nie słowa kluczowe ASC i DESC. przy czym w przypadku braku oznaczenia sortowania, sortowanie jest rosnące (ASC).

Informacje o sortowaniu zapisywane są po słowie kluczowym ORDER BY.
Order by jest ostatnim czlonem zapytania.

select sum(a) from tabela
where 0=1
group by b
having count >3
order by 1

jak na początek ten przykład jest dość skomplikowany, ale pokazuje konkretną kolejność słów kluczowych.
zaczynajac od prostego przykładu o znaną już tabele z przyjaciółmi:

select imie from przyjaciele
order by imie

po order by mamy nazwę kolumny i w tym wypadku jest równoznaczne z następującym zapisem:

select imie from przyjaciele
order by 1

W poprzednich częsciach kursu napisałem iż SQL nie widzi aliasów na poziomie zapytania tak wiec:

select imie i from przyjaciele
order by i

JEST ZŁE i NIE DZIAŁA.

gdy mamy kolumne na której operujemy jakąś funkcją staje się ona kolumną nienazwaną więc musimy zrobić:

select left(imie,3) from przyjaciele
order by 1

Dopisując DESC mozemy zmienic kolejnosc sortowania:

select * from przyjaciele
order by imie desc

gdy chcemy sortowac po wiecej niz jednej kolumnie:

select * from przyjaciele
order by plec,wynagrodzenie

Jeśli chcemy filtrować w różnej kolejności:

select * from przyjaciele
order by plec DESC,wynagrodzenie asc

przy czym asc jest zbędne.

Sortowanie po numerze kolumny musi się odbywać w zakresie kolumn które istnieją
podanie numeru spoza zakresu powoduje błąd.

Jeśli chodzi o podawanie konkretnych nazw kolumn z tabel to możemy sortować po kolumnach nie pobieranych w selekcie.

Dość ważna uwaga: dane są sortowane w zależności od typu,
dane które są napisami są sortowane: A, AA,AB,B
więc liczby w kolumnie tekstowej będą posortowane: 1,11,12,2
natomiast liczby zapisane jako liczby: 1,2,3

Podobnie jak w przypadku filtrowania w sortowaniu możemy również używając funkcji:

select imie from przyjaciele
order by
substr(imie,1,length(imie)-1)

to będzie sortowało po ostatniej literze imienia.

Leave a Reply

Your email address will not be published. Required fields are marked *

10 + 7 =