ORDER BY klauzule v SQL umožňuje výsledky dotazu uspořádat podle určitého pole (sloupce) nebo více sloupců. Existují 2 základní možnosti seřazení záznamů v tabulce.

  • Vzestupně (ascending order = ASC) – seřadí záznamy od nejmenšího po největší v případě čísel nebo o “A” do “Z” v případě textových řetězců.
  • Sestupně (descending order = DESC) seřadí záznamy od největšího po nejmenší u čísel a od “Z” do “A” u textu

Tip: Pokud neuvedeme jak chceme data v ORDER BY uspořádat, provede se defaultní nastavení, což je vzestupné řazení ASC

Pořadí v SQL skriptu

  1. SELECT
  2. FROM
  3. WHERE
  4. GROUP BY
  5. HAVING
  6. ORDER BY

Syntaxe ORDER BY:

SELECT [Sloupec1], [Sloupec2], [Sloupec3]
FROM Tabulka
WHERE pole [Operator] hodnota
ORDER BY [Sloupec1] ASC/DESC, [Sloupec2] ASC/DESC

Tato klauzule patří úplně nakonec. Uspořádat data lze buď podle jednoho nebo podle více sloupců. V tomto případě filtrujeme prioritně podle [Sloupec1] vzestupně a sekundárně podle sloupce [Sloupec2] sestupně.

Příklad

Tabulka se kterou budeme pracovat má strukturu viz obrázek níže a obsahuje 18484 záznamů:

Dimcustomer-pred-WHERE-klauzuli
Vstupní data

navážeme na příklad v článku SQL WHERE a kromě toho, že jsme na tabulku použili omezující podmínku, tak také výsledek přehledně uspořádáme pomocí ORDER BY.

Tentokrát budeme chtít z tabulky:

  • vybrat všechny zákazníky, kteří mají [CustomerKey] mezi 10000 a 15000
  • výsledek uspořádat podle příjmení [LastName] abecedně a současně podle datumu narození [BirthDate] sestupně

SELECT
  [CustomerKey]
  ,[FirstName]
  ,[LastName]
  ,[BirthDate]
  ,[Gender]
FROM [AdventureWorksDW2012].[dbo].[DimCustomer]
WHERE [CustomerKey] BETWEEN 10000 AND 15000
ORDER BY
  [LastName] ASC
  ,[BirthDate] DESC

Výsledkem je tabulka, kdy je výsledek seřazen nejprve podle Příjmení od A do Z a pokud nastane shoda v příjmení (např. Mr. Adams na obrázku) řadíme ještě podle datumu narození sestupně. Připojuji obrázek s vysvětlením jak jsou data seřazena:

SQL-ORDER-BY
Použití

Pokud bychom pořadí v ORDER BY klauzuli otočili, byl by výsledek samozřejmě úplně jiný, protože bychom nejdříve řadili podle datumu narození [BirthDate] a až poté podle Příjmení [LastName], podívejte se jak by to vypadalo:

SQL-ORDER-BY-prohozeni-poradi
Příklad
Rate this post

Jan Zedníček - Data & Finance

Jmenuji se Honza Zedníček a působím jako freelancer. Tuto práci dělám pro různé firmy již přes 10 let. Před tím jsem dlouhou dobu pracoval také jako BI developer, finanční controller, analytik a krátce jako finanční manažer. Vše pro společnosti z oblasti IT, bankovnictví a výroby. Po práci si rád zahraju tenis, volejbal, šachy, zajdu do posilovny a rád ochutnávám dobré rumy. Svoje znalosti a názory se snažím už několik let zapisovat na tento web, aby sloužily i někomu dalšímu - zejména studentům a zájemcům o informace z oblastí Business intelligence, korporátních financí a reportingu.

=> Přihlašte se do naší Excel facebook skupiny (1.4k+ členů), kde si pomáháme Excel CZ/SK diskuse »
=> Pokud vám článek pomohl, sdílejte ho nebo mě uveďte na vašich webových stránkách jako užitečný zdroj informací.

Leave a Reply

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