TOP

Lekcja SQL 3. Sortowanie danych (ORDER BY)

W przyszłości może zaistnieć potrzeba posortowania naszego zaznaczenia — alfabetycznie w przypadku tekstu lub rosnąco/malejąco — w przypadku wartości liczbowych. Do takich celów SQL ma specjalny operator ORDER BY.

Operator SQL ORDER BY może sortować zarówno od mniejszych do większych, czyli w kolejności rosnącej, jak i w odwrotnej kolejności – od większych do mniejszych.


1. Sortowanie wybranych danych

Posortujmy całą naszą tabelę według wielkości sprzedaży produktów, czyli według kolumny Kwota.

Run SQLSELECT * 
FROM Sumproduct 
ORDER BY Amount

Widzimy, że zapytanie posortowało rekordy w polu Kwota w kolejności rosnącej. Należy zachować kolejność ułożenia operatorów, czyli operator ORDER BY musi znaleźć się na samym końcu żądania. W przeciwnym razie zostanie wyświetlony komunikat o błędzie.

Cechą operatora ORDER BY jest także to, że potrafi on sortować dane po polu, którego nie wybraliśmy w zapytaniu, czyli wystarczy, że w ogóle znajduje się ono w bazie.

2. Sortowanie według kilku pól

Teraz posortujmy nasz przykład dodatkowo według jeszcze jednego pola. Niech będzie to pole City, które wyświetla miejsce sprzedaży produktów.

Run SQLSELECT * 
FROM Sumproduct 
ORDER BY Amount, City

Kolejność sortowania będzie zależała od kolejności pól w zapytaniu. Oznacza to, że w naszym przypadku dane zostaną najpierw posortowane według kolumny Kwota, a następnie według City.

3. Kierunek sortowania

Chociaż domyślnie operator ORDER BY sortuje w kolejności rosnącej, możemy również zapisywać wartości w kolejności malejącej. Aby to zrobić, na końcu każdego pola umieszczamy operator DESC (będący skrótem słowa DESCENDING).

Run SQLSELECT * 
FROM Sumproduct 
ORDER BY Amount DESC, City

W tym przykładzie wartości w polu Kwota zostały posortowane w kolejności malejącej, a w polu City – w kolejności rosnącej. Operator DESC dotyczy tylko jednej kolumny, dlatego w razie potrzeby należy go zapisać po każdym polu biorącym udział w sortowaniu.