Difference between revisions of "Opakování SQL"

From Wikivyuka
Jump to: navigation, search
m (Agregační funkce)
m
 
(4 intermediate revisions by the same user not shown)
Line 64: Line 64:
  
 
Možnost kontroly Vašich dotazů: [[Dotazy nad více tabulkami - možné řešení]]
 
Možnost kontroly Vašich dotazů: [[Dotazy nad více tabulkami - možné řešení]]
 +
 +
[http://gis.vsb.cz/wikivyuka/index.php/Prostorov%C3%A9_datab%C3%A1ze_-_cvi%C4%8Den%C3%AD Hlavní stránka předmětu]
  
 
=====Vnořené dotazy=====
 
=====Vnořené dotazy=====
Line 75: 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%A1ze Hlavní stránka předmětu]
+
[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

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
  1. Vypište seznam všech zaměstanců s jejich Id, jménem, příjmením a výší platu.
  2. Jak budou vypadat platy zaměstanců, pokud je zvýšíme o 500 (asi $ :-))?
  3. 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?
  4. 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.
  5. Kteří zaměstanci mají provizi? (Nejprve si to vypište jako celek a pak použijte klauzuli WHERE.)
  6. Kolik tedy doopravdy vydělávají ti, kteří mají procenta z provize?
  7. Vypište seznam zaměstnanců a jejich měsíčních platů v jednom sloupci.
  8. Kde a v jaké pozici pracuje pan Atkinson?
  9. Kteří zaměstanci mají jméno začínající na G?
  10. Kteří zaměstnanci mají jméno končící na "s"?
  11. Kteří zaměstanci mají plat nižší než $5000? Zkuste setřídit dle výšky platu.
  12. Kteří zaměstanci byli zaměstnáni po 1. lednu 1999?
  13. Kdo všechno nastoupil v roce 1999?
  14. Kdo šéfuje (Id) jednotlivým oddělením?
  15. Zobrazte všechny zaměstnance, kteří pracují v oddělení 80.
  16. Zobrazte všechny zaměstnance, kteří mají manažera s ID 146. (Zkusit formu parametrického dotazu MANAGER_ID=:mannum)
  17. 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í

Hlavní stránka předmětu

Agregační funkce
  1. Kolik zaměstnanců je celkem zaregistrováno?
  2. Kolik zaměstnanců má oddělení 80?
  3. Kolik různých oddělení je celkem?
  4. Zjistěte, na kolik různých oddělení jsou zaměstnanci rozděleni?
  5. Zjistěte, jaký je minimální, maximální a průměrný plat zaměstnanců z oddělení IT.
  6. Jaký je průměrný plat na jednotlivých odděleních?
  7. Která oddělení mají průměrný plat vyšší než 7000?
  8. Kdo vydělává nejvíc? Kolik to činí?

Možnost kontroly Vašich dotazů: Dotazy - agregované funkce - možné řešení

Hlavní stránka předmětu

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;

  1. Vypište strukturu tabulek Employees a Departments.
  2. 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?)
  3. 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?)
  4. 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?)
  5. Zobrazte seznam oddělení (id, název) a název města, ve kterém sídlí.
  6. 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.
  7. 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í

Hlavní stránka předmětu

Vnořené dotazy
  1. Jak se jmenují zaměstnanci, kteří vydělávají víc než Gates?
  2. Na kterém oddělení je největší průměrný plat?
  3. Který typ práce je takto ohodnocen?
  4. Je možné dotaz formulovat stejně i pro nejnižší průměrný plat?
  5. 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í

Hlavní stránka předmětu