📖
Teorie
DML: SELECT, INSERT, UPDATE, DELETE. DDL: CREATE/ALTER/DROP. DCL/TCL: GRANT/REVOKE, COMMIT/ROLLBACK. JOINy (INNER/LEFT/RIGHT/FULL), GROUP BY + HAVING, poddotazy, okénkové funkce (OVER, PARTITION BY), indexy.
🎯
Tahák
- 1JOIN vs. WHERE filtrace
- 2HAVING filtruje agregace
- 3Window funkce: ROW_NUMBER, SUM OVER
❓
Typické otázky u maturity
- 1Rozdíl WHERE vs. HAVING?
- 2Kdy použít CTE?
🏷️
Klíčová slova
SQLJOINGROUP BYCTEwindow
⚡
Praktická část
Zadání:
Vyber TOP 3 zákazníky podle útrat za poslední rok.
Kroky:
- 1JOIN objednávky a položky
- 2GROUP BY zákazník
- 3ORDER BY suma DESC
- 4LIMIT 3
Kód:
top-customers.sql
WITH year_orders AS (
SELECT o.CustomerId, SUM(oi.Price*oi.Qty) AS total
FROM Orders o
JOIN OrderItems oi ON oi.OrderId = o.Id
WHERE o.CreatedAt >= DATEADD(year,-1,GETDATE())
GROUP BY o.CustomerId
)
SELECT TOP 3 * FROM year_orders ORDER BY total DESC;