SQL s pomocí AI
Přejít na sekci
SQL bez memorování syntaxe
SQL je jazyk pro práci s databázemi a je základem analytické práce. Problém je, že učit se syntaxi SQL trvá měsíce a i zkušení analytici hledají správný způsob, jak napsat složitější dotaz. AI toto mění — popište, co chcete zjistit, a AI napíše SQL za vás.
Nemusíte umět SQL, abyste mohli AI požádat o SQL dotaz. Stačí vědět, jaká data máte (jaké tabulky, jaké sloupce) a co chcete zjistit. AI se postará o syntax, joiny, agregace a vše ostatní.
Jak popsat datový požadavek
Aby AI vygenerovala správný SQL, potřebuje tři věci: strukturu vaší databáze (jaké tabulky a sloupce máte), co chcete zjistit (váš business požadavek) a jaké filtry nebo podmínky chcete aplikovat.
Prompt pro SQL: 'Mám tabulku orders se sloupci: id, customer_id, product_id, amount, created_at. A tabulku customers se sloupci: id, name, email, country. Napiš SQL dotaz, který zobrazí top 10 zákazníků podle celkově utracené částky za posledních 12 měsíců, včetně jména a počtu objednávek.'
-- AI vygeneruje něco jako:
SELECT
c.name,
c.email,
COUNT(o.id) AS order_count,
SUM(o.amount) AS total_spent
FROM orders o
JOIN customers c ON o.customer_id = c.id
WHERE o.created_at >= CURRENT_DATE - INTERVAL '12 months'
GROUP BY c.id, c.name, c.email
ORDER BY total_spent DESC
LIMIT 10;Základní SQL vzory
Existuje několik SQL vzorů, které použijete v 90 % případů. Nemusíte si je pamatovat — stačí vědět, že existují, a AI je napíše za vás. Ale rozumět jim vám pomůže lépe formulovat požadavky.
Filtrování a řazení
-- 'Ukaž objednávky nad 1000 Kč z posledního měsíce,
-- seřazené od nejnovější'
SELECT *
FROM orders
WHERE amount > 1000
AND created_at >= CURRENT_DATE - INTERVAL '1 month'
ORDER BY created_at DESC;Agregace (součty, průměry, počty)
-- 'Kolik objednávek a za kolik peněz jsme měli
-- každý měsíc v roce 2025?'
SELECT
DATE_TRUNC('month', created_at) AS month,
COUNT(*) AS order_count,
SUM(amount) AS total_revenue,
AVG(amount) AS avg_order_value
FROM orders
WHERE created_at >= '2025-01-01'
GROUP BY DATE_TRUNC('month', created_at)
ORDER BY month;Joiny (spojování tabulek)
-- 'Pro každý produkt ukaž název, kategorii,
-- celkové prodeje a počet zákazníků'
SELECT
p.name AS product_name,
p.category,
SUM(o.amount) AS total_sales,
COUNT(DISTINCT o.customer_id) AS unique_customers
FROM orders o
JOIN products p ON o.product_id = p.id
GROUP BY p.id, p.name, p.category
ORDER BY total_sales DESC;Window funkce
Window funkce jsou pokročilý SQL koncept, který ale AI zvládá generovat bezchybně. Používají se pro výpočty 'v rámci skupiny' — například porovnání každého zákazníka s průměrem jeho regionu.
-- 'Pro každého zákazníka ukaž jeho měsíční utrácení
-- a průměr jeho regionu ve stejném měsíci'
SELECT
c.name,
c.country,
DATE_TRUNC('month', o.created_at) AS month,
SUM(o.amount) AS customer_spending,
AVG(SUM(o.amount)) OVER (
PARTITION BY c.country,
DATE_TRUNC('month', o.created_at)
) AS region_avg
FROM orders o
JOIN customers c ON o.customer_id = c.id
GROUP BY c.id, c.name, c.country,
DATE_TRUNC('month', o.created_at)
ORDER BY month, c.country;Validace SQL od AI
AI generuje SQL, který je většinou správný, ale ne vždy. Před spuštěním na produkci byste měli každý dotaz zkontrolovat. Existují jednoduchá pravidla, která vám pomohou.
- Zkontrolujte názvy tabulek a sloupců — AI je občas vymyslí, pokud nezná přesnou strukturu
- Ověřte JOIN podmínky — špatný JOIN může multiplikovat řádky a zkreslit výsledky
- Testujte na malém datasetu — přidejte LIMIT 10 před spuštěním na celou databázi
- Zeptejte se AI na vysvětlení — 'Vysvětli krok po kroku, co tento dotaz dělá'
- Porovnejte s očekávaným výsledkem — pokud znáte přibližnou odpověď, ověřte ji
Zlaté pravidlo: nikdy nespouštějte AI-generovaný dotaz s DELETE, UPDATE nebo DROP na produkční databázi bez review. Pro analytické SELECT dotazy je riziko nízké, ale modifikační dotazy mohou způsobit nevratné škody.
Pokročilé techniky
Jakmile si zvyknete na základní vzory, můžete AI požádat o složitější analýzy. Stačí popsat business otázku a AI kombinuje joiny, poddotazy, window funkce a CTE do jednoho dotazu.
Prompt pro složitý dotaz: 'Mám tabulky orders, customers a products. Chci vidět: pro každou produktovou kategorii měsíční tržby, měsíční růst v procentech oproti předchozímu měsíci a kumulativní tržby od začátku roku. Zahrň jen zákazníky, kteří mají více než 3 objednávky.'
-- AI vygeneruje CTE + window funkce:
WITH active_customers AS (
SELECT customer_id
FROM orders
GROUP BY customer_id
HAVING COUNT(*) > 3
),
monthly_sales AS (
SELECT
p.category,
DATE_TRUNC('month', o.created_at) AS month,
SUM(o.amount) AS revenue
FROM orders o
JOIN products p ON o.product_id = p.id
WHERE o.customer_id IN (
SELECT customer_id FROM active_customers
)
AND o.created_at >= DATE_TRUNC('year', CURRENT_DATE)
GROUP BY p.category, DATE_TRUNC('month', o.created_at)
)
SELECT
category,
month,
revenue,
ROUND(
(revenue - LAG(revenue) OVER (
PARTITION BY category ORDER BY month
)) * 100.0 / NULLIF(LAG(revenue) OVER (
PARTITION BY category ORDER BY month
), 0), 1
) AS growth_pct,
SUM(revenue) OVER (
PARTITION BY category
ORDER BY month
) AS ytd_revenue
FROM monthly_sales
ORDER BY category, month;Popište AI jednu z těchto situací (nebo svoji vlastní) a nechte vygenerovat SQL: 1. 'Mám e-shop s tabulkami orders, customers a products. Chci vidět top 5 zákazníků, kteří utratili nejvíce za poslední kvartál, včetně jejich oblíbené produktové kategorie.' 2. 'Mám tabulku events se sloupci user_id, event_type, created_at. Chci vidět denní počet unikátních uživatelů, kteří provedli alespoň jednu akci typu purchase.' 3. 'Mám tabulku employees se sloupci name, department, salary, hire_date. Chci srovnání průměrného platu podle oddělení a kolik lidí je pod a nad průměrem v každém oddělení.' Pro každý dotaz si nechte vysvětlit, co každá část dělá.
Nápověda
Pokud máte přístup k databázi, zkuste dotaz spustit. Pokud ne, požádejte AI o vytvoření testovacích dat (CREATE TABLE + INSERT INTO) a spusťte dotaz v online SQL editoru jako db-fiddle.com.
- AI generuje SQL z popisu v přirozeném jazyce — nemusíte umět syntaxi
- Popište AI strukturu databáze (tabulky, sloupce) a business požadavek
- Základní vzory: filtrování, agregace, joiny, window funkce pokrývají 90 % potřeb
- Vždy validujte SQL před spuštěním — kontrola názvů, JOIN podmínek, test na malém datasetu
- Nikdy nespouštějte DELETE/UPDATE/DROP z AI bez důkladného review
V příští lekci se ponoříme do AI pro tabulkové procesory — technika, která vám dá jasnou převahu. Odemkněte celý kurz a pokračujte hned.
2/7 hotovo — pokračujte!