Kurs Oracle SQL online. Sortowanie rekordów

W tej lekcji kursu Oracle SQL zaczniemy sortować rekordy w wyniku działania zapytania.

Jeśli chcesz posortować rekordy należy użyć klauzuli ORDER BY. Zatem do dzieła 🙂

Przykład1. Wyświetl pracowników sortując wynik po nazwiskach i imionach rosnąco.

SELECT *
FROM employees
ORDER BY last_name, first_name;

Dla rekordów z takimi samymi wartościami w kolumnie last_name, sortowanie nastąpi w oparciu o zawartość kolumny first_name. W naszym przypadku jest tak dla pracowników o nazwisku Grant – ponieważ były te same wartości w kolumnie nazwiska sortowanie tych rekordów nastąpiło z wykorzystaniem kolumny imię.

Sortowanie może być:

  • Rosnące: ORDER BY kolumna =  ORDER BY kolumna ASC
  • Malejące: ORDER BY kolumna DESC

Przykład 2. Wyświetl pracowników sortując wynik po nazwiskach malejąco, a dla tych samych nazwisk po imionach rosnąco.

SELECT *
FROM employees
ORDER BY last_name DESC, first_name;

Kolumny do sortowania można wskazywać używając:

  • Nazwy kolumny
  • Aliasu kolumny
  • Numeru kolumny w zapytaniu

SELECT first_name imie,
last_name nazwisko,
salary pensja
FROM employees;

Przykład 3. Zmodyfikuj powyższe zapytanie tak, aby wynik posortować po nazwiskach rosnąco, a dla tych samych nazwisk po imionach malejąco – korzystając z nazw kolumn

SELECT first_name imie,
       last_name nazwisko,
       salary pensja
FROM employees
ORDER BY last_name, first_name DESC;

Przykład 4. Zmodyfikuj powyższe zapytanie tak, aby wynik posortować po nazwiskach rosnąco, a dla tych samych nazwisk po imionach malejąco – korzystając z aliasów kolumn

SELECT first_name imie,
       last_name nazwisko,
       salary pensja
FROM employees
ORDER BY nazwisko, imie DESC;

Przykład 5. Zmodyfikuj powyższe zapytanie tak, aby wynik posortować po nazwiskach rosnąco, a dla tych samych nazwisk po imionach malejąco – korzystając z numerów kolumn w zapytaniu

SELECT first_name imie,
       last_name nazwisko,
       salary pensja
FROM employees
ORDER BY 2, 1 DESC;

W kolejnej lekcji poznasz najważniejsze wbudowane funkcje. Czyli m.in. jak wybierać inicjały z imion i nazwisk, jak zaokrąglać kwoty. Zapraszam!

 

 

 

This entry was posted in Oracle SQL, Oracle SQL Podstawy, SQL and tagged , , , , . Bookmark the permalink.

3 Responses to Kurs Oracle SQL online. Sortowanie rekordów

  1. adderek says:

    Ja bym jeszcze dodał, że operacja sortowania nie zwróci nam żadnych wyników dopóki Oracle nie posortuje wszystkich wierszy.
    Jest to ważne np. w serwisach WWW które mają zaprezentować wynik zapytania jak najszybciej (np. listę produktów).

    Przykład:
    Wyobraźmy sobie wielki magazyn z tysiącami paczek.
    Mogę komuś zlecić podanie mi pierwszej z brzegu paczki – dostanę ją szybko ale nie wiem z jaką zawartością.
    Mogę zlecić wyszukanie konkretnej paczki – co potrwa zapewne dłużej.
    A co gdybym polecił posortowanie paczke względem rozmiarów i podanie 10 najmniejszych? Tak właśnie działa ORDER BY.

    I jeszcze słówko wstępu do zaawansowanych tematów Oracle:
    (1) Pół biedy jeśli ktoś już paczki zmierzył i przegląda segregator. (2) Jeśli ktoś na dolnych półkach ułoży duże paczki a na górnych małe to też troszkę zyskamy (nie trzeba przeglądać wszystkich paczek). (3) Gorzej gdy każdą paczkę trzeba z osobna dopiero zmierzyć.
    Opcja (1) to indexy. Opcja (2) to partycjonowanie. Opcja (3) to full table scan.

  2. darek says:

    Przydałoby się jeszcze pokazać sortowanie według wyniku działania funkcji, np.;
    SELECT last_name, phone_number
    FROM employees
    ORDER BY SUBSTR(phone_number, 5, 3);

    a może nawet sortowanie według wartości kolumny z innej tabeli 🙂

    • Rafał Stryjek says:

      Sortowanie po wyniku funkcji to ważne tematy.. Zostawiam je na kurs dla zaawansowanych.. tak jak i NULLS FIRST .. 🙂

Leave a Reply to darek Cancel reply

Your email address will not be published.