niedziela, 2 września 2018

SQL - SORTOWANIE wyników


SQL - SORTOWANIE wyników

Klauzula SQL ORDER BY służy do sortowania danych w porządku rosnącym lub malejącym, w oparciu o jedną lub więcej kolumn. Niektóre bazy danych domyślnie sortują wyniki zapytania w porządku rosnącym.
Składnia
Podstawowa składnia klauzuli ORDER BY służąca do sortowania wyniku w porządku rosnącym lub malejącym jest następująca:
SELECT lista_kolumn
FROM nazwa_tabeli
[WHERE warunek]
[ORDER BY kolumna1, kolumna2, .. kolumnaN] [ASC | DESC];
Możesz użyć więcej niż jednej kolumny w klauzuli ORDER BY. Upewnij się, że niezależnie od kolumny, której używasz do sortowania, kolumna powinna znajdować się na liście kolumn.
Przykład
Rozważ tabelę KLIENCI zawierającą następujące rekordy -
+----+----------+-----+-----------+----------+
id,   nazwisko,   wiek,  adres,        pensja
'1', 'Zawadzki',  '32', 'Warszawska', '2000.00'
'2', 'Kowalczyk', '25', 'Sokratesa',  '1500.00'
'3', 'Kot',       '23', 'Darwina',    '3500.00'
'4', 'Kowalska',  '25', 'Modlińska',  '6500.00'
'5', 'Sapal',     '27', 'Wspólna',    '8500.00'
'6', 'Nowak',     '22', 'Nalewki',    '4500.00'
'7', 'Makowska',  '24', 'Piaseczno',  '10000.00'
+----+----------+-----+-----------+----------+
Poniżej znajduje się przykład, który posortuje wynik w porządku rosnącym według NAZWISKO i PENSJA.
SQL> SELECT * FROM KLIENCI
   ORDER BY NAZWISKO, PENSJA;
To dałoby następujący wynik -
+----+----------+-----+-----------+----------+
 id, nazwisko,    wiek,  adres,         pensja
'3', 'Kot',       '23', 'Darwina',    '2000.00'
'2', 'Kowalczyk', '25', 'Sokratesa',  '1500.00'
'4', 'Kowalska',  '25', 'Modlińska',  '6500.00'
'7', 'Makowska',  '24', 'Piaseczno',  '10000.00'
'6', 'Nowak',     '22', 'Blizne',     '4500.00'
'5', 'Sapal',     '27', 'Wspólna',    '8500.00'
'1', 'Zawadzki',  '32', 'Warszawska', '2000.00'
+----+----------+-----+-----------+----------+
Poniższy blok kodu to przykład, który posortuje wynik w porządku malejącym według NAZWISKO.
SQL> SELECT * FROM KLIENCI
   ORDER BY NAZWISKO DESC;
To dałoby następujący wynik -
+----+----------+-----+-----------+----------+
 id,  nazwisko,    wiek,  adres,        pensja
'1', 'Zawadzki',  '32',  'Warszawska', '2000.00'
'5', 'Sapal',     '27',  'Wspólna',    '8500.00'
'6', 'Nowak',     '22',  'Blizne',     '4500.00'
'7', 'Makowska',  '24',  'Piaseczno',  '10000.00'
'4', 'Kowalska',  '25',  'Modlińska',  '6500.00'
'2', 'Kowalczyk', '25',  'Sokratesa',  '1500.00'
'3', 'Kot',       '23',  'Darwina',    '2000.00'
+----+----------+-----+-----------+----------+
Aby pobrać wiersze według ich preferowanej kolejności, użyte zapytanie SELECT będzie wyglądało następująco:
SQL> SELECT * FROM CUSTOMERS
   ORDER BY (CASE ADDRESS
   WHEN 'DELHI'  THEN 1
   WHEN 'BHOPAL'          THEN 2
   WHEN 'KOTA'    THEN 3
   WHEN 'AHMADABAD' THEN 4
   WHEN 'MP'     THEN 5
   ELSE 100 END) ASC, ADDRESS DESC;
To dałoby następujący wynik -
+----+----------+-----+-----------+----------+
 id, nazwisko, wiek,     adres,        pensja
'5', 'Sapal',     '27', 'Wspólna',    '8500.00'
'1', 'Zawadzki',  '32', 'Warszawska', '2000.00'
'2', 'Kowalczyk', '25', 'Sokratesa',  '1500.00'
'7', 'Makowska',  '24', 'Piaseczno',  '10000.00'
'4', 'Kowalska',  '25', 'Modlińska',  '6500.00'
'3', 'Kot',       '23', 'Darwina',    '2000.00'
'6', 'Nowak',     '22', 'Blizne',     '4500.00'
+----+----------+-----+-----------+----------+
To uporządkuje klientów według kolumny ADRES w preferencji własnej w pierwszej kolejności naturalnej dla pozostałych adresów. Pozostałe adresy zostaną posortowane w odwrotnej kolejności alfabetycznej.


Brak komentarzy:

Prześlij komentarz