Cvičení 1
Sneaker shop – pokračování
Pokračujete nad databází Sneaker shop, tentokrát s dotazy přes víc tabulek a se součty. Jestli máte data ještě změněná z minulého cvičení, obnovte nejdřív databázi tlačítkem Obnovit databázi, ať počítáte s výchozími daty.
Zadání
-
Vypište všechny objednávky zákazníka s e-mailem
honza.novak@example.cz: číslo objednávky, datum a stav. Proč ho hledáme podle e-mailu, a ne podle jména? -
Vypište obsah objednávky 103: název produktu, počet kusů, cenu za kus v objednávce a dnešní cenu produktu. U kterého produktu se ceny liší a proč?
-
Spočítejte, kolik objednávek má každý zákazník. Zákazníci bez objednávek ať ve výsledku zůstanou s nulou.
-
Spočítejte celkovou hodnotu objednávek každého zákazníka a seřaďte zákazníky od toho, kdo utratil nejvíc. Hodnota objednávky je součet
quantity * pricepřes její položky. -
Najděte zákazníky, kteří zatím nic neobjednali. Napište dotaz jednou přes
LEFT JOINa jednou přesRIGHT JOINa ověřte, že oba vrátí stejné zákazníky. -
Najděte produkty, které se zatím neprodaly ani jednou.
-
Pro každou kategorii vypište počet produktů a průměrnou cenu zaokrouhlenou na celé koruny. Nechte jen kategorie s průměrnou cenou nad 1 000 Kč.
-
Tenhle dotaz měl vypsat zákazníky, kteří v obchodě utratili víc než 10 000 Kč. Spusťte ho, najděte chybu, opravte ji a vysvětlete, v čem byla:
sql SELECT c.name, SUM(oi.quantity * oi.price) AS total FROM customers c JOIN orders o ON o.customer_id = c.id JOIN order_items oi ON oi.order_id = o.id WHERE total > 10000 GROUP BY c.name ORDER BY total DESC; -
Opravený dotaz už běží. Porovnejte jeho výsledek s krokem 4: sedí jména i částky? Pokud ne, najděte v dotazu druhou chybu a opravte i ji.
Bonus
- Vrácené objednávky (stav
vrácená) se do útraty nepočítají. Upravte dotaz z kroku 4 tak, aby je vynechal. Změní se pořadí zákazníků? - Spočítejte tržby obchodu po měsících. Měsíc z data vytáhne funkce
strftime('%Y-%m', created_at). - Najděte pět nejprodávanějších produktů podle počtu prodaných kusů.