SQL dotazy pre analýzu dát

data sql

Dnes nadväzujem na pôvodný článok SQL pre dátových vedcov, základy práce s dátami a pridávam ďalšie informácie. Príklady, ktoré uvádzam v tomto článku sú ilustračné a slúžia na výučbu pokročilých SQL dotazov, ktoré v článku popisujem.

Dôležité je uvedomiť si, že kto sa chce zaoberať dátovou analýzou profesionálne, základné SQL mu stačiť rozhodne nebudú.

Skutočná analytická práca začína tam, kde:

  • sa spája viac tabuliek
  • sa počítajú trendy v čase
  • sa analyzuje správanie zákazníkov
  • sa pripravujú dátové sady pre jazyk Python alebo rôzne BI nástroje

V tomto článku si ukážeme ďalšie SQL techniky, ktoré dátový vedec bude často používať.

1/ Spájanie tabuliek cez JOIN (JOIN = INNER JOIN)

INNER JOIN je v dátovej analytike najpoužívanejší typ spojenia, pretože pracuje iba s relevantnými a úplnými záznamami. V praxi to znamená, že sa analyzujú len tie objednávky, ktoré majú existujúceho zákazníka, produkt alebo inú nadväzujúcu položku. To je dôležité najmä pri výpočtoch tržieb, počte objednávok alebo pri modelovaní správania zákazníkov, kde chýbajúce väzby môžu skresliť výsledky.

INNER JOIN je zároveň najrýchlejší typ JOINu, pretože databáza pracuje len s prienikom dát, čo má veľký význam pri veľkých objemoch dát.

Kedy INNER JOIN nepoužiť?

Nemal by sa použiť v prípade, keď treba vidieť aj neúplné alebo chýbajúce údaje. Typickým príkladom je analýza zákazníkov, ktorí ešte neurobili žiadnu objednávku, alebo produktov, ktoré sa ešte nepredávali. V takýchto prípadoch je vhodnejšie použiť LEFT JOIN, ktorý zachová všetky záznamy z hlavnej tabuľky a umožní identifikovať chýbajúce dáta (NULL hodnoty).

Aké sú najčastejšie chyby začiatočníkov pri použití JOINu?

Jednou z najčastejších chýb je nepochopenie typu vzťahov medzi tabuľkami (1:1, 1:N, N:M). Ak sa spoja tabuľky bez znalosti týchto vzťahov, môže dôjsť k násobeniu riadkov, čo spôsobí nesprávne súčty a skreslené výsledky. Ďalšou častou chybou je spájanie tabuliek na nesprávne stĺpce alebo používanie JOINu bez kontroly, či v tabuľkách neexistujú duplicity.

Preto je vždy dobrým zvykom pred samotným JOINom skontrolovať počet záznamov a unikátnosť kľúčov.

Príklad tabuliek:

customer_id name
1 Miloš
2 Peter
order_id customer_id price date
1001 1 150 10.11.2025
1002 2 300 11.12.2025

Pre spojenie tabuliek sa použije INNER JOIN.
SELECT c.name, o.price, o.date
FROM orders o
JOIN customers c ON o.customer_id = c.customer_id;

Pre zobrazenie aj zákazníkov, ale bez objednávok by to zase vyzeralo takto.
SELECT c.name, o.price
FROM customers c
LEFT JOIN orders o ON c.customer_id = o.customer_id;

2/ Analýza trendov v čase

Ide v podstate o základ z pohľadu časovej analýzy, zápis zdrojového kódu by vyzeral nasledovne.
SELECT date, SUM(price) AS trzby
FROM orders
GROUP BY date
ORDER BY date;

3/ Analytické funkcie

V tomto prípade ide o funkcie, ktoré sú extrémne dôležité pre analytikov a ako príklad by som uviedol zápis pre kumulatívne služby a následne zápis pre zobrazenie poradia objednávok.

Rast tržieb v čase
SELECT
date,
SUM(price) OVER (ORDER BY date) AS kumulativne_trzby
FROM orders;

Poradie nákupov každého zákazníka
SELECT
customer_id,
price,
RANK() OVER (PARTITION BY customer_id ORDER BY price DESC) AS poradie
FROM orders;

4/ Poddotazy (angl. subqueries)

V jazyku SQL ide o vnorené dotazy, ktoré sú vložené do iného SQL dotazu a používajú na to, aby jeden dotaz „pomohol“ s výsledkom iného dotazu. Napríklad ak by sme chceli nájsť objednávky, ktoré majú cenu vyššiu než je priemer, potom zápis kódu by bol:
SELECT *
FROM orders
WHERE price > (
SELECT AVG(price)
FROM orders
);

5/ Príprava dátovej sady pre analýzu

Tu je zase príklad na to, ako vzniká dátová sada pripravená na ďalšie spracovanie v jazyku Python alebo v nástroji Power BI.

WITH data AS (
SELECT
c.name,
o.date,
o.price
FROM orders o
JOIN customers c ON o.customer_id = c.customer_id
)
SELECT
name,
SUM(price) AS total_spent
FROM data
GROUP BY name
ORDER BY total_spent DESC;

 

Toto bolo len niekoľko príkladov, ako je možné jazyk SQL využiť pri práci s dátami.

V podstate uvedené SQL dotazy sú veľmi dôležité (ide o prvý krok analýzy a filtrácie dát), keď dátový vedec nechce zbytočne používať „milión“ riadkov pre spracovanie v jazyku Python, ale chce robiť analýzu priamo v databáze alebo chce jednoducho mať k dispozícii rýchlo výsledky.


Zaujal Vás článok?  

Zvážte možnosť jeho zdieľania na sociálnych sieťach alebo sa podeľte o svoj názor a pripomienky k článku a to odoslaním správy na e-mailovú adresu info@dataspark.sk.