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:
- Můžete si natáhnout data z databáze do Excelu a pak je analyzovat v kontingenční tabulce – viz. článek Jak spustit SQL dotaz v Excelu
- Napojte se v Power BI na databázi a udělejte si nějaký cool report – viz. článek Sales report v Power BI s dotazem do SQL databáze
- Napojte se z Excelu do databáze přes Power Query – Napojení na SQL server v Power Query
- Mnoho dalších využití
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;