Jedinečné hodnoty: DISTINCT

Jaké žánry obchod má? SELECT zanr FROM hry; dá 20 řádků, jeden pro každou hru, a většina žánrů je tam několikrát. DISTINCT (různé), hned za SELECT, nechá každý různý řádek jen jednou:

SELECT DISTINCT zanr
FROM hry
ORDER BY zanr;
zanr
Adventura
Akční
Logická
RPG
Simulace
Sportovní
Strategie
Závodní

Osm žánrů místo dvaceti řádků. Samotné DISTINCT nic neřadí: podle abecedy jsou žánry díky ORDER BY a bez něj by mohly přijít v libovolném pořadí.

S několika sloupci odstraní DISTINCT jen ty řádky, které jsou stejné ve všech sloupcích. Za jaké ceny se která hra prodávala?

SELECT DISTINCT hra_id, cena
FROM polozky
ORDER BY hra_id, cena;
hra_idcena
1999
2399
3499
4799
5399
5649
……

Většina her je tam jednou, ale některé dvakrát, třeba hra 5, Shadow Ninja: prodávala se za 649 Kč a na Black Friday za 399 Kč. Rozhoduje kombinace hodnot v řádku, ne každý sloupec zvlášť. I NULL se počítá jako hodnota: když ho má několik řádků, DISTINCT nechá jeden z nich.

DISTINCT se píše jednou, hned za SELECT, a platí pro celý řádek. Typická chyba: napsat ho před jeden ze sloupců. SELECT hra_id, DISTINCT cena FROM polozky; skončí chybou near "DISTINCT": syntax error.

Pokyny

Dotaz v editoru ukazuje město každého zákazníka a města se opakují. Změňte ho tak, aby tam bylo každé město jen jednou, podle abecedy. Zákazníci bez města přidají ještě jeden řádek, NULL:

mesto
NULL
Brno
Ostrava
Plzeň
Praha

Pod něj přidejte dotaz, který ukáže ID zákazníků, kteří si něco objednali: sloupec zakaznik_id tabulky objednavky, každé ID jen jednou, od nejmenšího. Zákazníci 12 a 14 tam nebudou, protože si nikdy nic neobjednali:

zakaznik_id
1
2
3
4
…

Nakonec zjistěte, jaké věkové hranice mají jednotlivé žánry: ukažte každou kombinaci zanr a vek_od jen jednou a seřaďte je podle žánru a pak podle věkové hranice:

zanrvek_od
Adventura7
Adventura12
Akční12
Akční16
……

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