Nejmenší a největší
MIN(sloupec) najde nejmenší hodnotu sloupce, MAX(sloupec) největší. Nejlevnější a nejdražší hra:
SELECT MIN(cena) AS nejlevnejsi,
MAX(cena) AS nejdrazsi
FROM hry;| nejlevnejsi | nejdrazsi |
|---|---|
| 129 | 1599 |
Fungují i na text a na kalendářní data. U textu je nejmenší hodnota ta první podle abecedy a největší ta poslední, ve stejném pořadí, v jakém řadí ORDER BY. Datum zapsané jako 'RRRR-MM-DD' se řadí stejně jako dny v kalendáři, takže MIN najde to nejdřívější a MAX to nejpozdější:
SELECT MIN(mesto) AS prvni_mesto,
MAX(mesto) AS posledni_mesto,
MIN(registrace) AS prvni_registrace,
MAX(registrace) AS posledni_registrace
FROM zakaznici;| prvni_mesto | posledni_mesto | prvni_registrace | posledni_registrace |
|---|---|---|---|
| Brno | Praha | 2023-01-15 | 2025-10-03 |
Všimněte si, že první město není NULL, i když ORDER BY mesto dává NULL na začátek. Stejně jako ostatní agregační funkce i MIN a MAX hodnoty NULL přeskakují. A protože porovnávají text stejně jako ORDER BY, tedy podle bajtů, skončila by města začínající na Č, Š nebo Ž až za Z.
Jak vidíte, jeden dotaz může mít několik agregačních funkcí, i různých. Všechny pracují se stejnými řádky, s těmi, které nechalo WHERE. Krátký přehled akčních her:
SELECT COUNT(*) AS pocet_her,
MIN(cena) AS nejlevnejsi,
MAX(cena) AS nejdrazsi,
ROUND(AVG(cena), 1) AS prumerna_cena
FROM hry
WHERE zanr = 'Akční';| pocet_her | nejlevnejsi | nejdrazsi | prumerna_cena |
|---|---|---|---|
| 4 | 649 | 999 | 836.5 |
Typická chyba: chcete název nejlevnější hry a napíšete SELECT nazev, MIN(cena) FROM hry;. V SQLite to shodou okolností funguje: s MIN a MAX vezme ostatní sloupce z řádku s nejmenší nebo největší hodnotou, tady Cube Logic. Jiné databáze ale ohlásí chybu, a když mají dvě hry stejnou nejnižší cenu, SQLite ukáže jen jednu z nich. Použijte raději, co znáte z druhé lekce, ORDER BY cena LIMIT 1, a abyste viděli, jestli stejně nestojí i jiná hra, ukažte pár řádků navíc.
Jak psát:
Pokyny
Ukažte datum první a poslední objednávky, ve sloupcích prvni_objednavka a posledni_objednavka:
| prvni_objednavka | posledni_objednavka |
|---|---|
| 2024-01-20 | 2025-12-22 |
Pod tím shrňte recenze hry Dragon Forge (hra_id 1): jejich počet, nejméně a nejvíce hvězdiček a průměrný počet hvězdiček zaokrouhlený na 2 desetinná místa, ve sloupcích pocet_recenzi, nejmene_hvezdicek, nejvice_hvezdicek a prumer_hvezdicek:
| pocet_recenzi | nejmene_hvezdicek | nejvice_hvezdicek | prumer_hvezdicek |
|---|---|---|---|
| 4 | 3 | 5 | 4.25 |
A z tabulky hry ukažte název, který je podle abecedy první, a ten, který je poslední, ve sloupcích prvni_nazev a posledni_nazev:
| prvni_nazev | posledni_nazev |
|---|---|
| Bakery Story | Zombie Town |
Začněte programovat zdarma
4/10