SQL ORDER BY – Řazení dat v SQL tabulce sestupně a vzestupně

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

5/5 - (2 votes)
Rubrika: SQL klauzule Základy SQL

O Ing. Jan Zedníček - Data Engineer & Controlling

Jmenuji se Honza Zedníček a působím jako data engineer freelancer. Během cca 10 let jsem zde shromáždil přes 600 IT case studies, průvodců, návodů a tipů určených zejména odborné veřejnosti, studentům a zájemcům o informace z oblastí Data Engineeringu, korporátních financí a reportingu. Zaměřuji se především na Microsoft technologie (on-prem i cloud) a různé synergické efekty v rámci jejich produktového portfolia pro dataře a finanční profesionály. Věnuji se také dalším platformám a významným hráčům z oblasti open source technologií. 🔥 Pokud vám tento článek pomohl, ocením referenci na vašem webu nebo zmínku v komunitě. A mám pro vás ještě tip: řešíte-li nějaký zapeklitý Excel problém, přihlašte se do naší Excel Facebook skupiny (2.4k+ členů), kde si pomáháme Excel CZ/SK diskuse ».

Leave a Reply

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