Dnes tu mám článek určený pro změnu začátečníkům. Bude plný příkladů sql dotazů s tím, že si to dáme od těch nejzákladnějších a postupně budeme přitvrzovat. SQL dotazy budou seřazeny chronologicky podle obtížnosti. Postupně budu přidávat další. Pro IT oddělení je dnes znalost SQL už nutnost, ale nastala doba, kdy SQL dotazování používají nejen ajťáci, ale i analytici nebo lidé, kteří pracují s reporty, protože je jejich práce daleko efektivnější. Před pokračováním ve čtení si můžete vyzkoušet otestovat svoje SQL znalosti v kvízu, který jsem připravil. Má 2 úrovně – začátečník a pokročilý.

Příklady k čemu vám SQL dotaz může v práci pomoci:

Jednoduchý sql dotaz bez podmínek

Dotaz s výběrem všech sloupců pomocí * bez omezujících podmínek

SELECT *
FROM [Temp].[dbo].[udv_SalesByProducts];

SQL dotazy s podmínkou ve WHERE

Dotaz s omezující podmínkou na rok 2010 ve where (tutoriál o where klauzuli zde):

SELECT *
FROM [Temp].[dbo].[udv_SalesByProducts]
WHERE Rok = '2010';

Složená podmínka ve WHERE

SQL dotaz kde jsme využili spoustu podmínek a některé základní operátory IN, BETWEEN, LIKE a >

SELECT *
FROM [Temp].[dbo].[udv_SalesByProducts]
WHERE ProduktSubKategorie LIKE ('%bike%')
AND Rok IN (2013,2014)
AND Mesic BETWEEN 1 AND 6
AND PrumernaTrzba>0;

Výběr prvních 10 záznamů seřazených vzestupně (ASC) nebo sestupně (DESC) pomocí ORDER BY

Vybíráme 10 (TOP) největších tržeb v roce 2013, seřazených sestupně (ORDER BY <Sloupec> DESC)

SELECT TOP 10 *
FROM [Temp].[dbo].[udv_SalesByProducts]
WHERE Rok =2013
ORDER BY Trzba DESC;

Agregujeme záznamy pomocí funkcí a klauzule GROUP BY

Aplikujeme agregační funkce SUM, COUNT, AVG, MAX, MIN na tržby přes kalendářní rok, podobné sql dotazy s využitím alespoň 1 agregační funkce jsou časté:

SELECT
  Rok,
  SUM(Trzba)  AS Soucet,
  COUNT(*)    AS Pocet_Zaznamu,
  AVG(Trzba)  AS Prumer,
  MAX(Trzba)  AS Maximalni_Trzba,
  MIN(Trzba)  AS Minimalni_Trzba
FROM [Temp].[dbo].[udv_SalesByProducts]
GROUP BY Rok
ORDER BY Rok ASC;

Základní použítí klauzule HAVING – podmínka na agregované záznamy

SQL dotaz na to, jak pomocí having omezit výsledek na záznamy, které splňují podmínku po agregaci (použijeme základ dotazu jako v příkladu viz. 5):

SELECT
Rok,
AVG(Trzba) AS Prumer
FROM [Temp].[dbo].[udv_SalesByProducts]
GROUP BY Rok
HAVING AVG(Trzba)<5000
ORDER BY Rok ASC;

5/5 - (7 votes)

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

Jmenuji se Honza Zedníček a působím jako freelancer. Pracoval jsem dříve také jako BI developer, finanční controller a analytik. Vše pro společnosti z oblasti IT, bankovnictví, consultingu a výroby. Po práci si rád zahraju tenis, volejbal, šachy, zajdu do posilovny a občas neúspěšně odpálím pár balónků v golfu 🏌️

Již cca 10 let zapisuji na tento web různé návody určené zejména odborné veřejnosti, 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 (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 *