Procvičování: podrobnosti objednávek

Je čas dát dohromady celou lekci. Obchod chce vidět podrobnosti svých objednávek: co v nich bylo, kdo je zadal a na kolik vyšly. Každý dotaz potřebuje několik tabulek, a když ho píšete, pomáhá postupovat krok za krokem:

  • Ve kterých tabulkách jsou data? Sepište si sloupce, které chcete ukázat a podle kterých chcete filtrovat a řadit, a najděte tabulky, ve kterých jsou.
  • Jak jsou tabulky propojené? Sledujte cizí klíče: každý je jeden JOIN se svým ON. Po každém JOINu dotaz spusťte a podívejte se na řádky: dává jejich počet smysl?
  • JOIN, nebo LEFT JOIN? Potřebujete i řádky bez protějšku, třeba zákazníky bez objednávky? Pak LEFT JOIN, a podmínky na jeho pravou tabulku patří do ON.
  • WHERE, GROUP BY, HAVING, ORDER BY fungují stejně jako nad jednou tabulkou, jen s kvalifikovanými názvy. Řaďte i podle dalšího sloupce pro případ shody.
  • Zkontrolujte čísla. Jsou moc velká? Pak se možná některé řádky znásobily: počítejte pomocí COUNT(DISTINCT …).

Částky objednávek fungují stejně jako tržba: každá položka vynesla p.pocet * p.cena a částka objednávky je součet jejích položek, takže seskupujete podle objednávky.

Pokyny

Účtenky Kristýny Fialové: ukažte každou položku každé její objednávky s těmito údaji: objednavka_id, datum objednávky, nazev hry, pocet, cena, kterou zaplatila za jeden kus, a cenu celé položky (počet krát cena) jako mezisoucet. Její objednávky najděte podle jména a řádky seřaďte podle objednavka_id, potom podle nazev:

objednavka_iddatumnazevpocetcenamezisoucet
232025-08-30Word Quest1249249
282025-11-28Shadow Ninja1399399
282025-11-28Zombie Town1499499

Pod něj ukažte celkovou částku každé zaplacené objednávky se jménem zákazníka: objednavka_id, datum, jmeno zákazníka, počet kusů v objednávce jako kusy a celkovou částku jako celkem. Objednávky seřaďte podle celkem od nejvyšší, potom podle objednavka_id:

objednavka_iddatumjmenokusycelkem
112024-09-30Jakub Dvořák22198
142024-12-20Eva Novotná21998
52024-04-02Lukáš Procházka21698
252025-10-10Tomáš Veselý21698
102024-08-23Matěj Němec21648
……………

Nakonec chce obchod vědět, odkud jeho peníze přicházejí. U každého města ukažte počet zaplacených objednávek jeho zákazníků jako pocet_objednavek a jejich tržbu jako trzba. Zákazníky bez města započítejte pod 'neuvedeno': město ukažte pomocí COALESCE jako mesto. Pozor: objednávka může mít několik položek, takže objednávky počítejte tak, aby se každá započítala jednou. Města seřaďte podle trzba od nejvyšší, potom podle mesto:

mestopocet_objednavektrzba
Praha1112994
Brno77540
Ostrava45493
Plzeň43423
neuvedeno21797

Začněte programovat zdarma

Registrací souhlasíte s provozními podmínkami a zásadami ochrany osobních údajů.

Nebo se registrujte pomocí:

12/12