Ako sa stať analytikom, časť 8: Ako vyberať údaje z SQL databázy

článok na blog uverejnený: 2. mája 2024

Táto séria článkov je venovaná prehľadu možností analyzovania údajov. Pre začiatočníkov má slúžiť ako cestovná mapa všetkých dôležitých kurzov v tejto oblasti. Pre pokročilých užívateľov a personalistov vo firmách môže slúžiť ako prehľad dôležitých technológií, ktoré by mal analytik ovládať.

V predchádzajúcej časti sme sa oboznámili s tým, čo znamenajú databázy a ukázali sme si, že je to vec, ktorú stretávame v práci dennodenne. Či už vo forme tabuliek v Exceli alebo vo forme systémov ukladajúcich firemné údaje. Kým bežnému používateľovi stačia vedomosti zo základov databáz, analytik potrebuje poznať jazyk SQL – na to, aby vedel s databázami efektívne komunikovať. V dnešnej časti sa práve na tento jazyk pozrieme bližšie.

Čo je jazyk SQL

Jazyk SQL sme si už predstavili v predchádzajúcej časti. Na tomto mieste je ešte zhrnutie – prehľad toho, čo všetko SQL dokáže.

SQL nám slúži na akúkoľvek činnosť spojenú s databázou. Či už ide vytváranie tabuľky (CREATE TABLE), pridávanie údajov do tabuľky (INSERT INTO) alebo ich výber (SELECT). Keď chceme vedieť ako vyberať údaje z SQL databázy, bude nás zaujímať príkaz SELECT, čo znamená výber údajov.

Ako a kam píšeme SQL príkazy

Skôr ako sa pustíme do písania dotazov, musíme najskôr vedieť kam SQL príkazy píšeme. Použitie nástroja závisí od použitej SQL platformy.
V našom príklade budeme pracovať s platforomou Microsoft SQL server. Pre ňu je základný nástroj softvér s názvom SSMS (skratka zo spojenia „SQL Server Management Studio“).

V prípade, že server už máme, stačí nainštalovať softvér SSMS.  Pridávam linku na stiahnutie.

https://aka.ms/ssmsfullsetup?clcid=0x409

Ak SQL server nemáme, musíme si najprv nainštalovať ten. Pridávam linku k inštalácii Microsoft SQL Server 2022 Developer edícia (zadarmo na testovacie účely).

https://go.microsoft.com/fwlink/p/?linkid=2215158&clcid=0x409&culture=en-us&country=us

Inštalácia oboch je plne automatická a nevyžaduje žiadne špeciálne znalosti.

Po úspešnom nainštalovaní spustíme program SSMS.
A prvá vec po spustení bude potreba prihlásenia sa na server.
Prihlasovacie údaje nám poskytne administrátor, ktorý by nám mal poskytnúť adresu, login aj heslo. Ak sme však server inštalovali na svoj počítač, bude to jednoduchšie – adresa bude bodka a prihlasovanie necháme na Windows (viď obrázok).

Po úspešnom prihlásení dostaneme v ľavom paneli zoznam databáz. Teraz nám už iba stačí použiť tlačidlo New Query v hornom paneli a môžeme začať písať SELECT-y 😊. V našom prípade ako podklad použijeme staručkú ukážkovú databázu Northwind, ktorá je zadarmo, a ktorej relačné vzťahy sme si predstavili v predchádzajúcej časti.

Ako funguje SELECT

Príklad – potrebujeme vybrať zoznam objednávok dodaných do Nemecka. Do okna Query napíšeme príkaz SELECT a stlačíme F5.

Základná syntax príkazu SELECT na obyčajný výber údajov nie je zložitá. Pozostáva zo základných častí, tzv. klauzúl (viď obrázok). Každá klauzula má svoj určený význam.

Začneme klauzulou FROM. Určuje, z ktorej tabuľky sa budú vyberať údaje. V našom prípade vyberáme údaje z tabuľky Orders. Touto klauzulou spravidla SELECT začíname písať. Súčasťou zápisu môže byť aj názov databázy (Northwind) a názov schémy (dbo).

Ďalšia klauzula je SELECT. Táto určuje, ktoré stĺpce zo zdroja vyberáme. V našom prípade sme vybrali základné informácie o objednávke – jej číslo, číslo zákazníka, dátum objednania a mesto dodania.

Klauzula WHERE funguje ako filter riadkov. Píše sa vo forme tzv. logických výrazov. To znamená vo forme operácií, ktorých výsledok je TRUE alebo FALSE. Tie riadky, pre ktoré je výsledok TRUE, sa zobrazia. V našom prípade filtrujeme krajinu dodania, čo je text Germany.
Stojí za povšimnutie že stĺpec ShipCountry nemusí byť zobrazený vo výsledku.

No a posledná klauzula je ORDER BY, a ako jej anglický názov napovedá, zabezpečuje poradie riadkov vo výsledku dotazu.

Pre neskoršie použitie je dôležité si všimnúť, že výsledok má celkovo 122 riadkov (na obrázku vpravo dolu).

SQL v Exceli

Definíciu dotazu môžeme skopírovať do Excelu do databázového konektora nástroja Power Query (viď obrázok).

Takéto nastavenie má v Exceli výhodu, lebo akékoľvek filtrovanie riadkov a stĺpcov nerobí Excel, ale SQL server. To znamená že výsledok je k dispozícii rýchlejšie. Výsledok môžeme Analyzovať v kontingenčej tabuľke.

Je užitočné zdôrazniť, že SQL server nám posielal údaje v tvare, ktorý bol viditeľný na obrázku v predošlej časti. Informácie o roku, mesiaci, a spočítanie počtu objednávok a medzimesačných rozdielov sú už nastavenia kontingenčnej tabuľky v Exceli :).
Takto vytvorená tabuľka má výhodu, pretože ju vieme automaticky aktualizovať priamo zo zdroja (tým je SQL server).

Ako funguje JOIN

Týmto sme ešte neskončili. V kontingenčnej tabuľke chceme rozčleniť počty objednávok podľa zákazníkov. Na to potrebujeme získať ich mená. Tie máme v tabuľke Customers. Tabuľky Customers a Orders majú relačný vzťah (viď obrázok) tvorený stĺpcami CustomerID.

To znamená, že budeme potrebovať operáciu JOIN, aby sme údaje z týchto dvoch tabuliek dostali dohromady. Základný JOIN bude tvoriť zápis tabuliek s operáciou JOIN a to v tvare:

Stĺpce X a Y z oboch tabuliek sú práve tie, ktoré tvoria vzájomný vzťah. V našom prípade sú to stĺpce CustomerID, ktoré sú pomenované v oboch tabuľkách rovnako. Teda ak potrebujeme spojiť tabuľku zákazníkov na základe stĺpca CustomerID, dotaz bude vyzerať takto:

Ešte niekoľko poznámok k riešeniu.

V definícií klauzuly sme použili vytvorenie aliasov (slovíčko AS) kvôli kratšiemu zápisu. V klauzule SELECT vymenúvame stĺpce tabuliek podľa potreby. Stĺpce CustomerID nemusia byť zobrazené oba, v tomto prípade je to iba kvôli prehľadu.

Vo výsledku je potrebné si všimnúť, že sme dostali iba 121 riadkov (na rozdiel od predošlého dotazu, v ktorom bolo riadkov 122). Jeden riadok sa stratil. Ide o riadok, ktorý bol na predošlom obrázku ako prvý (OrderID = 11070). Tento riadok nemal uvedené číslo zákazníka (CustomerID bolo NULL). Objednávka jednoducho nemala uvedeného zákazníka. Dôvod, prečo sme riadok stratili, súvisí z použitým spojením INNER JOIN.

INNER JOIN a OUTER JOIN

Existuje niekoľko rôznych typov spojení pomocou JOIN. Pre jednoduchosť sa v našom príklade budeme zaoberať iba dvoma a to INNER JOIN a LEFT OUTER JOIN. Základom spojenia pomocou JOIN je vzťah a ten je v našom prípade nasledovný:

Spojenie JOIN porovnáva stĺpce v oboch tabuľkách. INNER JOIN pri porovnaní berie iba tie riadky, kde je naše CustomerID v jednej aj v druhej tabuľke. Ak máme objednávku s CustomerID (NULL), ktoré nie je v tabuľke zákazníkov, riadok vynechá. A to je práve prvý riadok.

Vyriešiť to môžeme operáciou LEFT OUTER JOIN, ktorá zoberie každé CustomerID z tabuľky naľavo od slova JOIN. To je v našom prípade tabuľka Objednávok. Presnejšie povedané zoberie z ľavej tabuľky každý riadok bez ohľadu na to, či stĺpec CustomerID má alebo nemá v pravej tabuľke partnera. Výsledok môže vyzerať nasledovne:

Dostaneme pôvodných 122 riadkov. Prvý riadok má CustomerID NULL, čo je aj dôvod, prečo nemáme vyplnené meno spoločnosti (CompanyName). Ak niekto chce z toho rozumný výstup v konzumovateľnej podobe, znovu ponúkam výstup Excel-u postavený na hore uvedenom dotaze a jednej kontingenčnej tabuľke:

Ako začať s SQL

Ak vyberáme údaje z databázy SQL do Excelu alebo do Power BI tak nám tieto znalosti budú bohato postačovať. Základy SQL jazyka sú pre väčšinu SQL databáz rovnaké. Je teda jedno ktorú platformu použijete. Je však dobré zamerať sa na konkrétnu platformu hlavne kvôli používaným nástrojom. Základy výberu údajov a práca so spájaním JOIN sa vyučuje na nasledovných kurzoch.

MS SQL server:

  1. Školenie Microsoft SQL Server I. – úvod do SQL databáz (itlearning.sk)
  2. Školenie Microsoft SQL Server II. – písanie dotazov pomocou Transact SQL (itlearning.sk)

MYSQL alebo MariaDB:

  1. Kurz MySQL a SQL jazyk I. – inštalácia, správa, úvod do databáz a SQL programovanie (itlearning.sk)
  2. Kurz MySQL a SQL II. – pokročilé SQL, relačné databázy a Workbench (itlearning.sk)

ORACLE:

  1. Školenie Oracle – základy jazyka SQL (itlearning.sk)

Záverom

V súvislosti s uvedeným postupom si treba uvedomiť, že toto nie je koniec príkazu SELECT. Výber údajov totiž nie je analýza. Analýzu predstavujú súčty, počty, priemery. V tejto časti sme predpokladali, že budeme agregačné výpočty robiť pomocou kontingenčnej tabuľky Excelu, alebo pomocou vizuálov Power BI.

Analýzu môžeme robiť aj priamo v SQL. Použitie agregačných funkcií nie je priamočiare, pretože sa viaže na klauzulu GROUP BY. Čo samo o sebe nie je zložité, ale nestačí to. Potrebujeme znalosť ďalších konštrukcií ako sú poddotazy (tzv. Subqueries), CTE (Common Table Expressions) a analytické funkcie. O nich a o ich používaní sa viac dozviete v ďalšej časti.

autorom článku je: Ing. Patrik Toman
Patrik je lektorom takmer od vzniku spoločnosti. Jeho hlavným zameraním je analýza údajov, či už v Exceli alebo vo veľkých databázach pomocou jazyka SQL. V tejto oblasti ho môžete aj najčastejšie stretnúť ako lektora. Okrem databáz a analytiky má široký prehľad aj z oblasti serverov a počítačových sietí. Preto ho môžete stretnúť aj na školeniach Linux alebo Microsoft Windows Server.

Páčil sa vám článok? Pošleme vám podobné.
Aktivujte si okamžité zasielanie noviniek a článkov – už vám od nás nikdy nič neunikne. Môžeme vás okamžite informovať o aktuálnej akcii, novinke, špeciálnej kampani či zľave alebo novom článku na našom blogu. Akonáhle sa u nás v novinkách niečo zmení alebo pridá, do pár minút vám automaticky posielame email s odkazom na novinku na našu stránku. A odhlásiť sa môžete kedykoľvek. Nič neriskujete.


Nikam neodchádzajte, pozrite si naše novinky, akcie alebo si
prečítajte ďalšie podobné články:

Podobné články z kategórie
analýza, Databázy a SQL servery, Excel, jazyk SQL


Aktuálna akcia na IT kurzy a počítačové a marketingové kurzy v Bratislave