Difference between revisions of "Opakování SQL"
m (→Dotazy nad více tabulkami) |
m |
||
(3 intermediate revisions by the same user not shown) | |||
Line 77: | Line 77: | ||
Možnost kontroly Vašich dotazů: [[Vnořené dotazy - možné řešení]] | Možnost kontroly Vašich dotazů: [[Vnořené dotazy - možné řešení]] | ||
− | [http://gis.vsb.cz/wikivyuka/index.php/Prostorov%C3%A9_datab%C3% | + | [http://gis.vsb.cz/wikivyuka/index.php/Prostorov%C3%A9_datab%C3%A1ze_-_cvi%C4%8Den%C3%AD Hlavní stránka předmětu] |
Latest revision as of 09:23, 10 April 2015
Contents
Samostatná práce
Pro orientaci v datové struktuře databáze HR máte k dispozici E-R schema na stránce Schema HR.
V případě, že byste neměli k dispozici grafické zobrazení schematu, ani grafického klenta, použijte příkaz
DESCRIBE table;
Výpis struktury tabulky umožní zadávat příkazy SQL postavené na znalosti datové struktury i z řádkového režimu.
Dotazy nad jednou tabulkou
- Vypište seznam všech zaměstanců s jejich Id, jménem, příjmením a výší platu.
- Jak budou vypadat platy zaměstanců, pokud je zvýšíme o 500 (asi $ :-))?
- Kolik vydělávají zaměstanci ročně? Kolik to bude dělat v případě, že k ročnímu platu dostanou odměnu $500?
- Kolik by vydělávali ročně, pokud bychom jim zvedli plat o $500 měsíčně? Vypište včetně porovnání se stávajícím platem.
- Kteří zaměstanci mají provizi? (Nejprve si to vypište jako celek a pak použijte klauzuli WHERE.)
- Kolik tedy doopravdy vydělávají ti, kteří mají procenta z provize?
- Vypište seznam zaměstnanců a jejich měsíčních platů v jednom sloupci.
- Kde a v jaké pozici pracuje pan Atkinson?
- Kteří zaměstanci mají jméno začínající na G?
- Kteří zaměstnanci mají jméno končící na "s"?
- Kteří zaměstanci mají plat nižší než $5000? Zkuste setřídit dle výšky platu.
- Kteří zaměstanci byli zaměstnáni po 1. lednu 1999?
- Kdo všechno nastoupil v roce 1999?
- Kdo šéfuje (Id) jednotlivým oddělením?
- Zobrazte všechny zaměstnance, kteří pracují v oddělení 80.
- Zobrazte všechny zaměstnance, kteří mají manažera s ID 146. (Zkusit formu parametrického dotazu MANAGER_ID=:mannum)
- Kteří zaměstanci z oddělení 80 pracující pod manažerem 146 mají plat větší než 7000?
Možnost kontroly Vašich dotazů: Dotazy nad jednou tabulkou - možné řešení
Agregační funkce
- Kolik zaměstnanců je celkem zaregistrováno?
- Kolik zaměstnanců má oddělení 80?
- Kolik různých oddělení je celkem?
- Zjistěte, na kolik různých oddělení jsou zaměstnanci rozděleni?
- Zjistěte, jaký je minimální, maximální a průměrný plat zaměstnanců z oddělení IT.
- Jaký je průměrný plat na jednotlivých odděleních?
- Která oddělení mají průměrný plat vyšší než 7000?
- Kdo vydělává nejvíc? Kolik to činí?
Možnost kontroly Vašich dotazů: Dotazy - agregované funkce - možné řešení
Dotazy nad více tabulkami
Spojení více tabulek dle normy SQL1999: SELECT [DISTINCT] * | column [alias], ... FROM table1 JOIN table2 ON (col_name_1 = col_name_2);
"Přirozené" spojení má v Oracle syntaxi: SELECT [DISTINCT] * | column [alias], ... FROM table1 NATURAL JOIN table2;
Pro případ spojení přes více sloupců: SELECT [DISTINCT] * | column [alias], ... FROM table1 JOIN table2 USING common_col_name;
- Vypište strukturu tabulek Employees a Departments.
- Vytvořte seznam všech atributů při spojení těchto tabulek. (Odpovídají si hodnoty ze sloupců Department_ID z obou původních tabulek?)
- Seznam "ořežte" na tyto atributy: employee_id, department_id, department_name, kde department_id je požadováno jak z tabulky employees, tak i department. (Jaký je výsledek? Kolik záznamů obsahuje?)
- Seznam vytvořte tak, aby obsahoval "správné" spojení - tj. přes rovnost hodnot department_id v obou tabulkách. (Jaký je výsledek? Kolik záznamů obsahuje?)
- Zobrazte seznam oddělení (id, název) a název města, ve kterém sídlí.
- Vypište seznam všech zaměstanců z oddělení prodeje (název oddělení 'Sales') s jejich Id, jménem, příjmením a velikostí jejich provize.
- Kdo komu dělá šéfa? Zkuste setřídit dle jména manažera.
Možnost kontroly Vašich dotazů: Dotazy nad více tabulkami - možné řešení
Vnořené dotazy
- Jak se jmenují zaměstnanci, kteří vydělávají víc než Gates?
- Na kterém oddělení je největší průměrný plat?
- Který typ práce je takto ohodnocen?
- Je možné dotaz formulovat stejně i pro nejnižší průměrný plat?
- Vypište id, prijmeni, funkcni zařazení zaměstnanců, kteří mají vyšší plat než je průměr ve firmě. Také uveďte o kolik to je.
Možnost kontroly Vašich dotazů: Vnořené dotazy - možné řešení