Výpočty v dotazech

Dotaz může ukázat víc, než co je uložené v tabulce. Za SELECT můžete napsat výpočet a databáze ho provede pro každý řádek. Kolik by hry stály ve výprodeji se slevou 100 Kč na každou?

SELECT nazev, cena, cena - 100
FROM hry;
nazevcenacena - 100
Dragon Forge999899
Pixel Racer399299
Moon Farm499399
………

Můžete sčítat (+), odčítat (-), násobit (*) a dělit (/). Výpočet může používat sloupec a číslo jako tady, nebo několik sloupců: v tabulce polozky je pocet * cena částka, kterou zákazník zaplatil za všechny kusy hry. Stejně jako v matematice má * a / přednost před + a - a můžete použít závorky: cena + 5 * 2 přičte k ceně 10, kdežto (cena + 5) * 2 přičte 5 a výsledek zdvojnásobí. Násobí se hvězdičkou, ne písmenem x. A SQLite umí počítat i bez tabulky: SELECT 7 * 6; ukáže 42.

Vypočítaný sloupec v tabulce není, takže nemá vlastní název. Výsledek ho pojmenuje podle výpočtu, přesně tak, jak jste ho napsali: cena - 100. Když napíšete cena-100 bez mezer, bude se sloupec jmenovat cena-100. V příštím cvičení se naučíte dát mu lepší název.

Výpočet mění jen to, co dotaz ukáže. Tabulka zůstane, jak byla: hry po tomto dotazu stojí pořád stejně. (Jak data v tabulce změnit, se naučíte později v kurzu.)

Fungují i desetinná čísla, jen se v SQL píšou s desetinnou tečkou, ne s čárkou: cena * 0.8 je cena po slevě 20 %. Výsledek je pak desetinné číslo, třeba 799.2. Pozor ale na dělení: když jsou obě čísla celá, je celý i výsledek, takže 25 / 2 dá 12, a ne 12,5. Proč a co s tím, se naučíte ve 4. lekci.

Typická chyba: desetinná čárka. SELECT nazev, cena * 0,8 FROM hry; neskončí chybou, ale čárka v něm odděluje sloupce, a tak výsledek místo ceny po slevě ukáže dva sloupce: cena * 0 se samými nulami a 8 se samými osmičkami.

Pokyny

Ukažte ID objednávky, ID hry, počet a cenu každé položky v tabulce polozky a v posledním sloupci, kolik zákazník zaplatil za všechny její kusy: počet krát cenu. Seřaďte položky podle počtu od největšího a položky se stejným počtem podle ID objednávky. První řádky jsou položky se dvěma kusy. (Poslední sloupec se jmenuje podle výpočtu tak, jak ho napíšete, takže se jeho název může lišit.)

objednavka_idhra_idpocetcenapocet * cena
622399798
151126491298
221427991598
……………

Pod tím ukažte ID hry, ID zákazníka a hvězdičky každé recenze a v posledním sloupci hvězdičky jako skóre ze 100: hvězdičky krát 20. Seřaďte recenze podle ID hry a recenze stejné hry podle ID zákazníka:

hra_idzakaznik_idhvezdickyhvezdicky * 20
11480
125100
15360
…………

Začněte programovat zdarma

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

Nebo se registrujte pomocí:

8/12