{"id":36671,"date":"2019-10-31T22:13:01","date_gmt":"2019-10-31T19:13:01","guid":{"rendered":"https:\/\/prohoster.info\/blog\/sql-zanimatelnye-zadachki\/"},"modified":"2019-10-31T22:13:01","modified_gmt":"2019-10-31T19:13:01","slug":"sql-zanimatelnye-zadachki","status":"publish","type":"post","link":"https:\/\/prohoster.info\/cs\/blog\/news\/sql-zanimatelnye-zadachki","title":{"rendered":"SQL. Zaj\u00edmav\u00e9 \u00fakoly","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Ahoj, Habr!<\/p>\n<p>U\u017e v\u00edce ne\u017e 3 roky u\u010d\u00edm SQL v r\u016fzn\u00fdch \u0161kol\u00edc\u00edch centrech, a jedn\u00edm z m\u00fdch pozorov\u00e1n\u00ed je to, \u017ee studenti se l\u00e9pe orientuj\u00ed a ch\u00e1pou SQL, pokud maj\u00ed p\u0159ed sebou \u00fakol, a ne jen vypr\u00e1v\u011bn\u00ed o mo\u017enostech a teoretick\u00fdch z\u00e1kladech.<\/p>\n<p>V tomto \u010dl\u00e1nku se s v\u00e1mi pod\u011bl\u00edm o sv\u016fj seznam \u00fakol\u016f, kter\u00e9 d\u00e1v\u00e1m student\u016fm jako dom\u00e1c\u00ed \u00fakol a nad kter\u00fdmi prov\u00e1d\u00edme r\u016fzn\u00e9 brainstormingy, co\u017e vede k hlubok\u00e9mu a jasn\u00e9mu pochopen\u00ed SQL.<\/p>\n<p><img decoding=\"async\" alt=\"SQL. Zaj\u00edmav\u00e9 \u00fakoly\" src=\"\/wp-content\/uploads\/2019\/07\/283f472e0c382c0621ffc14e2ac06881.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSQL (\u02c8\u025bs\u02c8kju\u02c8\u025bl; anglicky structured query language \u2014 \u201ejazyk strukturovan\u00fdch dotaz\u016f\u201c) \u2014 deklarativn\u00ed programovac\u00ed jazyk, pou\u017e\u00edvan\u00fd pro vytv\u00e1\u0159en\u00ed, modifikaci a spr\u00e1vu dat v rela\u010dn\u00ed datab\u00e1zi, spravovan\u00e9 p\u0159\u00edslu\u0161n\u00fdm syst\u00e9mem pro spr\u00e1vu datab\u00e1z\u00ed. <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/SQL\">V\u00edce informac\u00ed\u2026 <\/a><\/noindex><\/p>\n<p>O SQL se d\u00e1 p\u0159e\u010d\u00edst na r\u016fzn\u00fdch m\u00edstech. <noindex><a rel=\"nofollow\" href=\"https:\/\/www.google.com\/search?q=SQL\">zdroj\u016f<\/a><\/noindex>.<br \/>\nTento \u010dl\u00e1nek nem\u00e1 za c\u00edl nau\u010dit v\u00e1s SQL od nuly.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nTak poj\u010fme na to.<\/p>\n<p>Budeme pou\u017e\u00edvat v\u0161em zn\u00e1mou <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/oracle\/db-sample-schemas\/tree\/master\/human_resources\">HR sch\u00e9ma<\/a><\/noindex> v Oracle s jej\u00edmi tabulkami (<noindex><a rel=\"nofollow\" href=\"https:\/\/docs.oracle.com\/en\/database\/oracle\/oracle-database\/12.2\/comsc\/HR-sample-schema-table-descriptions.html\">V\u00edce informac\u00ed<\/a><\/noindex>):<\/p>\n<p><img decoding=\"async\" alt=\"SQL. Zaj\u00edmav\u00e9 \u00fakoly\" src=\"\/wp-content\/uploads\/2019\/07\/b518c0bedd0d7bbeaedbcc4bd95079cd.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nPoznamen\u00e1m, \u017ee se budeme zab\u00fdvat pouze \u00fakoly na SELECT. Nejsou zde \u00fakoly na DML a DDL.<\/p>\n<h2>\u00dakoly<\/h2>\n<p>\n<b>Omezen\u00ed a t\u0159\u00edd\u011bn\u00ed dat<\/b><\/p>\n<p>Tabulka Employees. Z\u00edskejte seznam se v\u0161emi informacemi o zam\u011bstnanc\u00edch. <br \/>\n<b class=\"spoiler_title\">\u0158e\u0161en\u00ed<\/b><\/p>\n<pre><code class=\"sql\">SELECT * FROM employees\n<\/code><\/pre>\n<p>Tabulka Zam\u011bstnanci. Z\u00edskat seznam v\u0161ech zam\u011bstnanc\u016f se jm\u00e9nem 'David'<br \/>\n<b class=\"spoiler_title\">\u0158e\u0161en\u00ed<\/b><\/p>\n<pre><code class=\"sql\">SELECT *\n  FROM employees\n WHERE first_name = 'David';\n<\/code><\/pre>\n<p>Tabulka Zam\u011bstnanci. Z\u00edskat seznam v\u0161ech zam\u011bstnanc\u016f s job_id rovn\u00edm 'IT_PROG'<br \/>\n<b class=\"spoiler_title\">\u0158e\u0161en\u00ed<\/b><\/p>\n<pre><code class=\"sql\">SELECT *\n  FROM employees\n WHERE job_id = 'IT_PROG'\n<\/code><\/pre>\n<p>Tabulka Employees. Z\u00edskejte seznam v\u0161ech zam\u011bstnanc\u016f z 50. odd\u011blen\u00ed (department_id) se mzdou (salary) vy\u0161\u0161\u00ed ne\u017e 4000.<br \/>\n<b class=\"spoiler_title\">\u0158e\u0161en\u00ed<\/b><\/p>\n<pre><code class=\"sql\">SELECT *\n  FROM employees\n WHERE department_id = 50 AND salary &gt; 4000;\n<\/code><\/pre>\n<p>Tabulka Employees. Z\u00edskejte seznam v\u0161ech zam\u011bstnanc\u016f z 20. a 30. odd\u011blen\u00ed (department_id).<br \/>\n<b class=\"spoiler_title\">\u0158e\u0161en\u00ed<\/b><\/p>\n<pre><code class=\"sql\">SELECT *\n  FROM employees\n WHERE department_id = 20 OR department_id = 30;\n<\/code><\/pre>\n<p>Tabulka Zam\u011bstnanci. Z\u00edskat seznam v\u0161ech zam\u011bstnanc\u016f, jejich\u017e posledn\u00ed p\u00edsmeno v jm\u00e9n\u011b je 'a'<br \/>\n<b class=\"spoiler_title\">\u0158e\u0161en\u00ed<\/b><\/p>\n<pre><code class=\"sql\">SELECT *\n  FROM employees\n WHERE first_name LIKE '%a';\n<\/code><\/pre>\n<p>Tabulka Employees. Z\u00edskejte seznam v\u0161ech zam\u011bstnanc\u016f z 50. a 80. odd\u011blen\u00ed (department_id), kte\u0159\u00ed maj\u00ed bonus (hodnota ve sloupci commission_pct nen\u00ed pr\u00e1zdn\u00e1).<br \/>\n<b class=\"spoiler_title\">\u0158e\u0161en\u00ed<\/b><\/p>\n<pre><code class=\"sql\">SELECT *\n  FROM employees\n WHERE     (department_id = 50 OR department_id = 80)\n       AND commission_pct IS NOT NULL;\n<\/code><\/pre>\n<p>Tabulka Zam\u011bstnanci. Z\u00edskat seznam v\u0161ech zam\u011bstnanc\u016f, jejich\u017e jm\u00e9no obsahuje alespo\u0148 2 p\u00edsmena 'n'<br \/>\n<b class=\"spoiler_title\">\u0158e\u0161en\u00ed<\/b><\/p>\n<pre><code class=\"sql\">SELECT *\n  FROM employees\n WHERE first_name LIKE '%n%n%';\n<\/code><\/pre>\n<p>Tabulka Employees. Z\u00edskejte seznam v\u0161ech zam\u011bstnanc\u016f, jejich\u017e d\u00e9lka jm\u00e9na je v\u011bt\u0161\u00ed ne\u017e 4 p\u00edsmena.<br \/>\n<b class=\"spoiler_title\">\u0158e\u0161en\u00ed<\/b><\/p>\n<pre><code class=\"sql\">SELECT *\n  FROM employees\n WHERE first_name LIKE '%_____%';\n<\/code><\/pre>\n<p>Tabulka Employees. Z\u00edskejte seznam v\u0161ech zam\u011bstnanc\u016f, jejich\u017e mzda je v rozmez\u00ed od 8000 do 9000 (v\u010detn\u011b).<br \/>\n<b class=\"spoiler_title\">\u0158e\u0161en\u00ed<\/b><\/p>\n<pre><code class=\"sql\">VYBERTE *\n  Z zam\u011bstnanc\u016f\n KDY\u017d je plat mezi 8000 A 9000;\n<\/code><\/pre>\n<p>Tabulka Zam\u011bstnanci. Z\u00edskat seznam v\u0161ech zam\u011bstnanc\u016f, jejich\u017e jm\u00e9no obsahuje znak '%'<br \/>\n<b class=\"spoiler_title\">\u0158e\u0161en\u00ed<\/b><\/p>\n<pre><code class=\"sql\">VYBERTE *\n  Z zam\u011bstnanc\u016f\n KDY\u017d prvn\u00ed_jm\u00e9no LIKE '%%%' ESCAPE '';\n<\/code><\/pre>\n<p>Tabulka Zam\u011bstnanci. Z\u00edskat seznam v\u0161ech ID manager\u016f<br \/>\n<b class=\"spoiler_title\">\u0158e\u0161en\u00ed<\/b><\/p>\n<pre><code class=\"sql\">VYBERTE DISTINCT manager_id\n  Z zam\u011bstnanc\u016f\n KDY\u017d manager_id NEN\u00cd NULL;\n<\/code><\/pre>\n<p>Tabulka Zam\u011bstnanci. Z\u00edskat seznam pracovn\u00edk\u016f s jejich pozicemi ve form\u00e1tu: Donald(sh_clerk)<br \/>\n<b class=\"spoiler_title\">\u0158e\u0161en\u00ed<\/b><\/p>\n<pre><code class=\"sql\">VYBERTE first_name || '(' || LOWER (job_id) || ')' zam\u011bstnanec Z zam\u011bstnanc\u016f;\n<\/code><\/pre>\n<p>\n<b>Pou\u017eit\u00ed funkc\u00ed pro jednotliv\u00e9 \u0159\u00e1dky k p\u0159izp\u016fsoben\u00ed v\u00fdstupu<\/b><\/p>\n<p>Tabulka Zam\u011bstnanci. Z\u00edskat seznam v\u0161ech zam\u011bstnanc\u016f, jejich\u017e d\u00e9lka jm\u00e9na je v\u011bt\u0161\u00ed ne\u017e 10 p\u00edsmen<br \/>\n<b class=\"spoiler_title\">\u0158e\u0161en\u00ed<\/b><\/p>\n<pre><code class=\"sql\">VYBERTE *\n  Z zam\u011bstnanc\u016f\n KDY\u017d LENGTH (first_name) &gt; 10;\n<\/code><\/pre>\n<p>Tabulka Zam\u011bstnanci. Z\u00edskat seznam v\u0161ech zam\u011bstnanc\u016f, jejich\u017e jm\u00e9no obsahuje p\u00edsmeno 'b' (bez ohledu na velikost p\u00edsmen)<br \/>\n<b class=\"spoiler_title\">\u0158e\u0161en\u00ed<\/b><\/p>\n<pre><code class=\"sql\">VYBERTE *\n  Z zam\u011bstnanc\u016f\n KDY\u017d INSTR (LOWER (first_name), 'b') &gt; 0;\n<\/code><\/pre>\n<p>Tabulka Zam\u011bstnanci. Z\u00edskat seznam v\u0161ech zam\u011bstnanc\u016f, jejich\u017e jm\u00e9no obsahuje alespo\u0148 2 p\u00edsmena 'a'<br \/>\n<b class=\"spoiler_title\">\u0158e\u0161en\u00ed<\/b><\/p>\n<pre><code class=\"sql\">VYBERTE *\n  Z zam\u011bstnanc\u016f\n KDY\u017d INSTR (LOWER (first_name),'a',1,2) &gt; 0;\n<\/code><\/pre>\n<p>Tabulka Zam\u011bstnanci. Z\u00edskat seznam v\u0161ech zam\u011bstnanc\u016f, jejich\u017e plat je n\u00e1sobek 1000<br \/>\n<b class=\"spoiler_title\">\u0158e\u0161en\u00ed<\/b><\/p>\n<pre><code class=\"sql\">VYBERTE *\n  Z zam\u011bstnanc\u016f\n KDY\u017d MOD (plat, 1000) = 0;\n<\/code><\/pre>\n<p>Tabulka Zam\u011bstnanci. Z\u00edskat prvn\u00ed 3-m\u00edstn\u00e9 \u010d\u00edslo telefonn\u00edho \u010d\u00edsla zam\u011bstnance, pokud je jeho \u010d\u00edslo ve form\u00e1tu XXX.XXX.XXXX<br \/>\n<b class=\"spoiler_title\">\u0158e\u0161en\u00ed<\/b><\/p>\n<pre><code class=\"sql\">VYBERTE telefonn\u00ed_\u010d\u00edslo, SUBSTR (telefonn\u00ed_\u010d\u00edslo, 1, 3) nov\u00e9_telefonn\u00ed_\u010d\u00edslo\n  Z zam\u011bstnanc\u016f\n KDY\u017d telefonn\u00ed_\u010d\u00edslo LIKE '___.___.____';\n<\/code><\/pre>\n<p>Tabulka Odd\u011blen\u00ed. Z\u00edskat prvn\u00ed slovo z n\u00e1zvu odd\u011blen\u00ed pro ty, jejich\u017e n\u00e1zev obsahuje v\u00edce ne\u017e jedno slovo<br \/>\n<b class=\"spoiler_title\">\u0158e\u0161en\u00ed<\/b><\/p>\n<pre><code class=\"sql\">VYBERTE department_name,\n       SUBSTR (department_name, 1, INSTR (department_name, ' ')-1)\n           prvn\u00ed_slovo\n  Z odd\u011blen\u00ed\n KDY\u017d INSTR (department_name, ' ') &gt; 0;\n<\/code><\/pre>\n<p>Tabulka Zam\u011bstnanci. Z\u00edskat jm\u00e9na zam\u011bstnanc\u016f bez prvn\u00edho a posledn\u00edho p\u00edsmene v jejich jm\u00e9n\u011b<br \/>\n<b class=\"spoiler_title\">\u0158e\u0161en\u00ed<\/b><\/p>\n<pre><code class=\"sql\">VYBERTE first_name, SUBSTR (first_name, 2, LENGTH (first_name) - 2) nov\u00e9_jm\u00e9no\n  Z zam\u011bstnanc\u016f;\n<\/code><\/pre>\n<p>Tabulka Zam\u011bstnanci. Z\u00edskat seznam v\u0161ech zam\u011bstnanc\u016f, jejich\u017e posledn\u00ed p\u00edsmeno v jm\u00e9n\u011b je 'm' a d\u00e9lka jm\u00e9na je v\u011bt\u0161\u00ed ne\u017e 5<br \/>\n<b class=\"spoiler_title\">\u0158e\u0161en\u00ed<\/b><\/p>\n<pre><code class=\"sql\">VYBERTE *\n  Z zam\u011bstnanc\u016f\n KDY\u017d SUBSTR (first_name, -1) = 'm' A D\u00c9LKA(first_name) &gt; 5;\n<\/code><\/pre>\n<p>Tabulka Dual. Z\u00edskat datum p\u0159\u00ed\u0161t\u00edho p\u00e1tku<br \/>\n<b class=\"spoiler_title\">\u0158e\u0161en\u00ed<\/b><\/p>\n<pre><code class=\"sql\">VYBERTE NEXT_DAY (SYSDATE, 'P\u00c1TEK') p\u0159\u00ed\u0161t\u00ed_p\u00e1tek Z DUAL;\n<\/code><\/pre>\n<p>Tabulka Zam\u011bstnanci. Z\u00edskat seznam v\u0161ech zam\u011bstnanc\u016f, kte\u0159\u00ed pracuj\u00ed ve spole\u010dnosti v\u00edce ne\u017e 17 let<br \/>\n<b class=\"spoiler_title\">\u0158e\u0161en\u00ed<\/b><\/p>\n<pre><code class=\"sql\">VYBERTE *\n  Z zam\u011bstnanc\u016f\n KDY\u017d MONTHS_BETWEEN (SYSDATE, hire_date) \/ 12 &gt; 17;\n<\/code><\/pre>\n<p>Tabulka Zam\u011bstnanci. Z\u00edskat seznam v\u0161ech zam\u011bstnanc\u016f, jejich\u017e posledn\u00ed \u010d\u00edslice telefonn\u00edho \u010d\u00edsla je lich\u00e1 a skl\u00e1d\u00e1 se ze 3 \u010d\u00edsel odd\u011blen\u00fdch te\u010dkami<br \/>\n<b class=\"spoiler_title\">\u0158e\u0161en\u00ed<\/b><\/p>\n<pre><code class=\"sql\">VYBERTE *\n  Z zam\u011bstnanc\u016f\n KDY\u017d MOD (SUBSTR (telefonn\u00ed_\u010d\u00edslo, -1), 2) != 0\n       A INSTR (telefonn\u00ed_\u010d\u00edslo,'.',1,3) = 0;\n<\/code><\/pre>\n<p>Tabulka Zam\u011bstnanci. Z\u00edskat seznam v\u0161ech zam\u011bstnanc\u016f, u kter\u00fdch je v hodnot\u011b job_id po znaku '_' alespo\u0148 3 znaky a toto hodnota po '_' nen\u00ed 'CLERK'<br \/>\n<b class=\"spoiler_title\">\u0158e\u0161en\u00ed<\/b><\/p>\n<pre><code class=\"sql\">VYBERTE *\n  Z zam\u011bstnanc\u016f\n KDE     D\u00c9LKA (SUBSTR (job_id, INSTR (job_id, '_') + 1)) &gt; 3\n       A SUBSTR (job_id, INSTR (job_id, '_') + 1) != 'CLERK';\n<\/code><\/pre>\n<p>Tabulka Zam\u011bstnanci. Z\u00edskat seznam v\u0161ech zam\u011bstnanc\u016f, nahradit v hodnot\u011b PHONE_NUMBER v\u0161echny '.' za '-'<br \/>\n<b class=\"spoiler_title\">\u0158e\u0161en\u00ed<\/b><\/p>\n<pre><code class=\"sql\">VYBERTE phone_number, REPLACE (phone_number, '.', '-') nov\u00fd_phone_number\n  Z zam\u011bstnanc\u016f;\n<\/code><\/pre>\n<p>\n<b>Pou\u017eit\u00ed konverzn\u00edch funkc\u00ed a podm\u00ednkov\u00fdch v\u00fdraz\u016f<\/b><\/p>\n<p>Tabulka Zam\u011bstnanci. Z\u00edskat seznam v\u0161ech zam\u011bstnanc\u016f, kte\u0159\u00ed nastoupili do zam\u011bstn\u00e1n\u00ed prvn\u00ed den m\u011bs\u00edce (jak\u00e9hokoliv)<br \/>\n<b class=\"spoiler_title\">\u0158e\u0161en\u00ed<\/b><\/p>\n<pre><code class=\"sql\">VYBERTE *\n  Z zam\u011bstnanc\u016f\n KDE TO_CHAR (hire_date, 'DD') = '01';\n<\/code><\/pre>\n<p>Tabulka Zam\u011bstnanci. Z\u00edskat seznam v\u0161ech zam\u011bstnanc\u016f, kte\u0159\u00ed nastoupili do zam\u011bstn\u00e1n\u00ed v roce 2008<br \/>\n<b class=\"spoiler_title\">\u0158e\u0161en\u00ed<\/b><\/p>\n<pre><code class=\"sql\">VYBERTE *\n  Z zam\u011bstnanc\u016f\n KDE TO_CHAR (hire_date, 'YYYY') = '2008';\n<\/code><\/pre>\n<p>Tabulka DUAL. Zobrazit z\u00edt\u0159ej\u0161\u00ed datum ve form\u00e1tu: Z\u00edtra je druh\u00fd den v lednu<br \/>\n<b class=\"spoiler_title\">\u0158e\u0161en\u00ed<\/b><\/p>\n<pre><code class=\"sql\">VYBERTE TO_CHAR (SYSDATE, 'fm\"\"Z\u00edtra je \"\"Ddspth \"\"den v\"\" M\u011bs\u00edc')     info\n  Z DUAL;\n<\/code><\/pre>\n<p>Tabulka Zam\u011bstnanci. Z\u00edskat seznam v\u0161ech zam\u011bstnanc\u016f a datum n\u00e1stupu ka\u017ed\u00e9ho do pr\u00e1ce ve form\u00e1tu: 21. \u010dervna 2007<br \/>\n<b class=\"spoiler_title\">\u0158e\u0161en\u00ed<\/b><\/p>\n<pre><code class=\"sql\">VYBERTE first_name, TO_CHAR (hire_date, 'fmddth \"\"of\"\" M\u011bs\u00edc, YYYY') hire_date\n  Z zam\u011bstnanc\u016f;\n<\/code><\/pre>\n<p>Tabulka Zam\u011bstnanci. Z\u00edskat seznam pracovn\u00edk\u016f se zv\u00fd\u0161en\u00fdmi platy o 20 %. Plat zobrazit se znakem dolaru<br \/>\n<b class=\"spoiler_title\">\u0158e\u0161en\u00ed<\/b><\/p>\n<pre><code class=\"sql\">VYBERTE first_name, TO_CHAR (salary + salary * 0.20, 'fm$999,999.00') nov\u00fd_salary\n  Z zam\u011bstnanc\u016f;\n<\/code><\/pre>\n<p>Tabulka Zam\u011bstnanci. Z\u00edskat seznam v\u0161ech zam\u011bstnanc\u016f, kte\u0159\u00ed nastoupili do zam\u011bstn\u00e1n\u00ed v \u00fanoru 2007.<br \/>\n<b class=\"spoiler_title\">\u0158e\u0161en\u00ed<\/b><\/p>\n<pre><code class=\"sql\">VYBERTE *\n  Z zam\u011bstnanc\u016f\n KDE hire_date BETWEEN TO_DATE ('01.02.2007', 'DD.MM.YYYY')\n                     A LAST_DAY (TO_DATE ('01.02.2007', 'DD.MM.YYYY'));\n\nVYBERTE *\n  Z zam\u011bstnanc\u016f\n KDE to_char(hire_date,'MM.YYYY') = '02.2007'; \n<\/code><\/pre>\n<p>Tabulka DUAL. Zobrazit aktu\u00e1ln\u00ed datum, + sekunda, + minuta, + hodina, + den, + m\u011bs\u00edc, + rok<br \/>\n<b class=\"spoiler_title\">\u0158e\u0161en\u00ed<\/b><\/p>\n<pre><code class=\"sql\">VYBERTE SYSDATE                          nyn\u00ed,\n       SYSDATE + 1 \/(24 * 60 * 60)     plus_second,\n       SYSDATE + 1 \/(24 * 60)          plus_minute,\n       SYSDATE + 1 \/ 24                 plus_hour,\n       SYSDATE + 1                      plus_day,\n       ADD_MONTHS (SYSDATE, 1)          plus_month,\n       ADD_MONTHS (SYSDATE, 12)         plus_year\n  Z DUAL;\n<\/code><\/pre>\n<p>Tabulka Zam\u011bstnanci. Z\u00edskat seznam v\u0161ech zam\u011bstnanc\u016f s celkov\u00fdmi platy (salary + commission_pct(%)) ve form\u00e1tu: $24,000.00<br \/>\n<b class=\"spoiler_title\">\u0158e\u0161en\u00ed<\/b><\/p>\n<pre><code class=\"sql\">VYBERTE first_name, salary, TO_CHAR (salary + salary * NVL (commission_pct, 0), 'fm$99,999.00') full_salary\n  Z zam\u011bstnanc\u016f;\n<\/code><\/pre>\n<p>Tabulka Zam\u011bstnanci. Z\u00edskat seznam v\u0161ech zam\u011bstnanc\u016f a informace o p\u0159\u00edtomnosti bonus\u016f k platu (Ano\/Ne)<br \/>\n<b class=\"spoiler_title\">\u0158e\u0161en\u00ed<\/b><\/p>\n<pre><code class=\"sql\">VYBERTE first_name, commission_pct, NVL2 (commission_pct, 'Ano', 'Ne') has_bonus\n  Z zam\u011bstnanc\u016f;\n<\/code><\/pre>\n<p>Tabulka Zam\u011bstnanci. Z\u00edskat \u00farove\u0148 platu ka\u017ed\u00e9ho zam\u011bstnance: M\u00e9n\u011b ne\u017e 5000 se pova\u017euje za n\u00edzkou \u00farove\u0148, V\u00edce nebo rovno 5000 a m\u00e9n\u011b ne\u017e 10000 se pova\u017euje za norm\u00e1ln\u00ed \u00farove\u0148, V\u00edce nebo rovno 10000 se pova\u017euje za vysokou \u00farove\u0148<br \/>\n<b class=\"spoiler_title\">\u0158e\u0161en\u00ed<\/b><\/p>\n<pre><code class=\"sql\">VYBERTE first_name,\n       salary,\n       P\u0158\u00cdPAD\n           KDY\u017d salary = 5000 A salary &lt; 10000 THEN &#039;Norm\u00e1ln\u00ed&#039;\n           JINAK &#039;Vysok\u00e1&#039;\n       KONEC salary_level\n  Z zam\u011bstnanc\u016f;\n<\/code><\/pre>\n<p>Tabulka Zem\u011b. Pro ka\u017edou zemi zobrazit region, ve kter\u00e9m se nach\u00e1z\u00ed: 1-Evropa, 2-Amerika, 3-Asie, 4-Afrika (bez Join)<br \/>\n<b class=\"spoiler_title\">\u0158e\u0161en\u00ed<\/b><\/p>\n<pre><code class=\"sql\">VYBERTE country_name country,\n       DECODE (region_id,\n               1, 'Evropa',\n               2, 'Amerika',\n               3, 'Asie',\n               4, 'Afrika',\n               'Nezn\u00e1m\u00fd')\n           region\n  Z zem\u00ed;\n\nVYBERTE country_name\n           country,\n       P\u0158\u00cdPAD region_id\n           KDY 1 POTOM 'Evropa'\n           KDY 2 POTOM 'Amerika'\n           KDY 3 POTOM 'Asie'\n           KDY 4 POTOM 'Afrika'\n           JINAK 'Nezn\u00e1m\u00fd'\n       KONEC\n           region\n  Z zem\u00ed;\n<\/code><\/pre>\n<p>\n<b>Zpr\u00e1va o agregovan\u00fdch datech pomoc\u00ed skupinov\u00fdch funkc\u00ed<\/b><\/p>\n<p>Tabulka Zam\u011bstnanci. Z\u00edskejte zpr\u00e1vu o department_id s minim\u00e1ln\u00edm a maxim\u00e1ln\u00edm platem, s nejran\u011bj\u0161\u00ed a nejpozd\u011bj\u0161\u00ed datem n\u00e1stupu do zam\u011bstn\u00e1n\u00ed a s po\u010dtem zam\u011bstnanc\u016f. T\u0159\u00eddit podle po\u010dtu zam\u011bstnanc\u016f (sestupn\u011b)<br \/>\n<b class=\"spoiler_title\">\u0158e\u0161en\u00ed<\/b><\/p>\n<pre><code class=\"sql\">  VYBERTE department_id,\n         MIN (salary) min_salary,\n         MAX (salary) max_salary,\n         MIN (hire_date) min_hire_date,\n         MAX (hire_date) max_hire_Date,\n         COUNT (*) count\n    Z zam\u011bstnanc\u016f\nSKUPINA PODLE department_id\npo\u0159ad\u00ed podle count(*) sestupn\u011b;\n<\/code><\/pre>\n<p>Tabulka Zam\u011bstnanci. Kolik zam\u011bstnanc\u016f, jejich\u017e jm\u00e9na za\u010d\u00ednaj\u00ed stejn\u00fdm p\u00edsmene? T\u0159\u00eddit podle po\u010dtu. Uk\u00e1zat pouze ty, kde je po\u010det v\u011bt\u0161\u00ed ne\u017e 1<br \/>\n<b class=\"spoiler_title\">\u0158e\u0161en\u00ed<\/b><\/p>\n<pre><code class=\"sql\">VYBERTE SUBSTR (first_name, 1, 1) first_char, COUNT (*)\n    Z zam\u011bstnanc\u016f\nSKUPINA PODLE SUBSTR (first_name, 1, 1)\n  M\u00cdT COUNT (*) &gt; 1\nPO\u0158AD\u00cd PODLE 2 SESTUPN\u011a;\n<\/code><\/pre>\n<p>Tabulka Zam\u011bstnanci. Kolik zam\u011bstnanc\u016f pracuje ve stejn\u00e9m odd\u011blen\u00ed a maj\u00ed stejn\u00fd plat?<br \/>\n<b class=\"spoiler_title\">\u0158e\u0161en\u00ed<\/b><\/p>\n<pre><code class=\"sql\">VYBERTE department_id, salary, COUNT (*)\n    Z zam\u011bstnanc\u016f\nSKUPINA PODLE department_id, salary\n  M\u00cdT COUNT (*) &gt; 1;\n<\/code><\/pre>\n<p>Tabulka Zam\u011bstnanci. Z\u00edskejte zpr\u00e1vu o tom, kolik zam\u011bstnanc\u016f nastoupilo do zam\u011bstn\u00e1n\u00ed v ka\u017ed\u00fd den v t\u00fddnu. T\u0159\u00eddit podle po\u010dtu<br \/>\n<b class=\"spoiler_title\">\u0158e\u0161en\u00ed<\/b><\/p>\n<pre><code class=\"sql\">VYBERTE TO_CHAR (hire_Date, 'Den') den, COUNT (*)\n    Z zam\u011bstnanc\u016f\nSKUPINA PODLE TO_CHAR (hire_Date, 'Den')\nPO\u0158AD\u00cd PODLE 2 SESTUPN\u011a;\n<\/code><\/pre>\n<p>Tabulka Zam\u011bstnanci. Z\u00edskejte zpr\u00e1vu o tom, kolik zam\u011bstnanc\u016f nastoupilo do zam\u011bstn\u00e1n\u00ed b\u011bhem let. T\u0159\u00eddit podle po\u010dtu<br \/>\n<b class=\"spoiler_title\">\u0158e\u0161en\u00ed<\/b><\/p>\n<pre><code class=\"sql\">VYBERTE TO_CHAR (hire_date, 'YYYY') rok, COUNT (*)\n    Z zam\u011bstnanc\u016f\nSKUPINA PODLE TO_CHAR (hire_date, 'YYYY');\n<\/code><\/pre>\n<p>Tabulka Zam\u011bstnanci. Z\u00edskejte po\u010det odd\u011blen\u00ed, ve kter\u00fdch jsou zam\u011bstnanci<br \/>\n<b class=\"spoiler_title\">\u0158e\u0161en\u00ed<\/b><\/p>\n<pre><code class=\"sql\">VYBERTE COUNT (COUNT (*))     department_count\n    Z zam\u011bstnanc\u016f\n   KDY department_id NEN\u00cd NULL\nSKUPINA PODLE department_id;\n<\/code><\/pre>\n<p>Tabulka Zam\u011bstnanci. Z\u00edskejte seznam department_id, ve kter\u00e9m pracuje v\u00edce ne\u017e 30 zam\u011bstnanc\u016f<br \/>\n<b class=\"spoiler_title\">\u0158e\u0161en\u00ed<\/b><\/p>\n<pre><code class=\"sql\">  VYBERTE department_id\n    Z zam\u011bstnanc\u016f\nSKUPINA PODLE department_id\n  M\u00cdT COUNT (*) &gt; 30;\n<\/code><\/pre>\n<p>Tabulka Zam\u011bstnanci. Z\u00edskejte seznam department_id a zaokrouhlen\u00fd pr\u016fm\u011brn\u00fd plat zam\u011bstnanc\u016f v ka\u017ed\u00e9m odd\u011blen\u00ed. <br \/>\n<b class=\"spoiler_title\">\u0158e\u0161en\u00ed<\/b><\/p>\n<pre><code class=\"sql\">  VYBERTE department_id, ROUND (AVG (salary)) avg_salary\n    Z zam\u011bstnanc\u016f\nSKUPINA PODLE department_id;\n<\/code><\/pre>\n<p>Tabulka Zem\u011b. Z\u00edskejte seznam region_id, kde je suma v\u0161ech d\u00e9lek country_name v\u011bt\u0161\u00ed ne\u017e 60<br \/>\n<b class=\"spoiler_title\">\u0158e\u0161en\u00ed<\/b><\/p>\n<pre><code class=\"sql\">  VYBERTE region_id\n    Z zem\u00ed\nSKUPINA PODLE region_id\n  M\u00cdT SUM (LENGTH (country_name)) &gt; 60;\n<\/code><\/pre>\n<p>Tabulka Zam\u011bstnanci. Z\u00edskejte seznam department_id, ve kter\u00e9m pracuj\u00ed zam\u011bstnanci n\u011bkolika (&gt;1) job_id<br \/>\n<b class=\"spoiler_title\">\u0158e\u0161en\u00ed<\/b><\/p>\n<pre><code class=\"sql\">  VYBERTE department_id\n    Z zam\u011bstnanc\u016f\nSKUPINA PODLE department_id\n  M\u00cdT COUNT (DISTINCT job_id) &gt; 1;\n<\/code><\/pre>\n<p>Tabulka Employees. Z\u00edskat seznam manager_id, u kter\u00fdch je po\u010det pod\u0159\u00edzen\u00fdch v\u011bt\u0161\u00ed ne\u017e 5 a sou\u010det v\u0161ech plat\u016f jeho pod\u0159\u00edzen\u00fdch p\u0159esahuje 50000<br \/>\n<b class=\"spoiler_title\">\u0158e\u0161en\u00ed<\/b><\/p>\n<pre><code class=\"sql\">  SELECT manager_id\n    FROM employees\nGROUP BY manager_id\n  HAVING COUNT (*) &gt; 5 AND SUM (salary) &gt; 50000;\n<\/code><\/pre>\n<p>Tabulka Employees. Z\u00edskat seznam manager_id, u kter\u00fdch je pr\u016fm\u011brn\u00fd plat v\u0161ech jeho pod\u0159\u00edzen\u00fdch mezi 6000 a 9000, kte\u0159\u00ed nedost\u00e1vaj\u00ed bonusy (commission_pct je pr\u00e1zdn\u00fd)<br \/>\n<b class=\"spoiler_title\">\u0158e\u0161en\u00ed<\/b><\/p>\n<pre><code class=\"sql\">  SELECT manager_id, AVG (salary) avg_salary\n    FROM employees\n   WHERE commission_pct IS NULL\nGROUP BY manager_id\n  HAVING AVG (salary) BETWEEN 6000 AND 9000;\n<\/code><\/pre>\n<p>Tabulka Zam\u011bstnanci. Z\u00edskat maxim\u00e1ln\u00ed plat ze v\u0161ech zam\u011bstnanc\u016f, jejich\u017e job_id kon\u010d\u00ed na slovo 'CLERK'<br \/>\n<b class=\"spoiler_title\">\u0158e\u0161en\u00ed<\/b><\/p>\n<pre><code class=\"sql\">SELECT MAX (salary) max_salary\n  FROM employees\n WHERE job_id LIKE '%CLERK';\n\nSELECT MAX (salary) max_salary\n  FROM employees\n WHERE SUBSTR (job_id, -5) = 'CLERK';\n<\/code><\/pre>\n<p>Tabulka Employees. Z\u00edskat maxim\u00e1ln\u00ed plat ze v\u0161ech pr\u016fm\u011brn\u00fdch plat\u016f podle odd\u011blen\u00ed<br \/>\n<b class=\"spoiler_title\">\u0158e\u0161en\u00ed<\/b><\/p>\n<pre><code class=\"sql\">  SELECT MAX (AVG (salary))\n    FROM employees\nGROUP BY department_id;\n<\/code><\/pre>\n<p>Tabulka Employees. Z\u00edskat po\u010det zam\u011bstnanc\u016f se stejn\u00fdm po\u010dtem p\u00edsmen v jm\u00e9nu. Zobrazit jen ty, jejich\u017e d\u00e9lka jm\u00e9na je v\u011bt\u0161\u00ed ne\u017e 5 a po\u010det zam\u011bstnanc\u016f se stejn\u00fdm jm\u00e9nem p\u0159esahuje 20. Se\u0159adit podle d\u00e9lky jm\u00e9na<br \/>\n<b class=\"spoiler_title\">\u0158e\u0161en\u00ed<\/b><\/p>\n<pre><code class=\"sql\">  SELECT LENGTH (first_name), COUNT (*)\n    FROM employees\nGROUP BY LENGTH (first_name)\n  HAVING LENGTH (first_name) &gt; 5 AND COUNT (*) &gt; 20\nORDER BY LENGTH (first_name);\n\n  SELECT LENGTH (first_name), COUNT (*)\n    FROM employees\n   WHERE LENGTH (first_name) &gt; 5\nGROUP BY LENGTH (first_name)\n  HAVING COUNT (*) &gt; 20\nORDER BY LENGTH (first_name);\n<\/code><\/pre>\n<p>\n<b>Zobrazov\u00e1n\u00ed dat z v\u00edce tabulek pomoc\u00ed JOIN<\/b><\/p>\n<p>Tabulka Employees, Departaments, Locations, Countries, Regions. Z\u00edskat seznam region\u016f a po\u010det zam\u011bstnanc\u016f v ka\u017ed\u00e9m regionu<br \/>\n<b class=\"spoiler_title\">\u0158e\u0161en\u00ed<\/b><\/p>\n<pre><code class=\"sql\">  SELECT region_name, COUNT (*)\n    FROM employees e\n         JOIN departments d ON (e.department_id = d.department_id)\n         JOIN locations l ON (d.location_id = l.location_id)\n         JOIN countries c ON (l.country_id = c.country_id)\n         JOIN regions r ON (c.region_id = r.region_id)\nGROUP BY region_name;\n<\/code><\/pre>\n<p>Tabulka Employees, Departaments, Locations, Countries, Regions. Z\u00edskat podrobn\u00e9 informace o ka\u017ed\u00e9m zam\u011bstnanci:<br \/>\nFirst_name, Last_name, Departament, Job, Street, Country, Region<br \/>\n<b class=\"spoiler_title\">\u0158e\u0161en\u00ed<\/b><\/p>\n<pre><code class=\"sql\">SELECT First_name,\n       Last_name,\n       Department_name,\n       Job_id,\n       street_address,\n       Country_name,\n       Region_name\n  FROM employees  e\n       JOIN departments d ON (e.department_id = d.department_id)\n       JOIN locations l ON (d.location_id = l.location_id)\n       JOIN countries c ON (l.country_id = c.country_id)\n       JOIN regions r ON (c.region_id = r.region_id);\n<\/code><\/pre>\n<p>Tabulka Employees. Zobrazit v\u0161echny mana\u017eery, kte\u0159\u00ed maj\u00ed pod\u0159\u00edzen\u00fdch v\u00edce ne\u017e 6<br \/>\n<b class=\"spoiler_title\">\u0158e\u0161en\u00ed<\/b><\/p>\n<pre><code class=\"sql\">  SELECT man.first_name, COUNT (*)\n    FROM employees emp JOIN employees man ON (emp.manager_id = man.employee_id)\nGROUP BY man.first_name\n  HAVING COUNT (*) &gt; 6;\n<\/code><\/pre>\n<p>Tabulka Employees. Zobrazit v\u0161echny zam\u011bstnance, kte\u0159\u00ed nikomu nepodl\u00e9haj\u00ed<br \/>\n<b class=\"spoiler_title\">\u0158e\u0161en\u00ed<\/b><\/p>\n<pre><code class=\"sql\">SELECT emp.first_name\n  FROM employees emp\n       LEFT JOIN employees man ON (emp.manager_id = man.employee_id)\n WHERE man.FIRST_NAME IS NULL;\n\nSELECT first_name\n  FROM employees\n WHERE manager_id IS NULL;\n<\/code><\/pre>\n<p>Tabulka Zam\u011bstnanci, Pracovn\u00ed historie. V tabulce Employee jsou ulo\u017eeni v\u0161ichni zam\u011bstnanci. V tabulce Job_history jsou zam\u011bstnanci, kte\u0159\u00ed opustili spole\u010dnost. Z\u00edskat zpr\u00e1vu o v\u0161ech zam\u011bstnanc\u00edch a jejich statusu ve spole\u010dnosti (Pracuje nebo opustil spole\u010dnost s datem odchodu)<br \/>\nP\u0159\u00edklad:<br \/>\njm\u00e9no | status<br \/>\nJennifer | Opustil spole\u010dnost 31. prosince 2006<br \/>\nClara | V sou\u010dasnosti pracuje<br \/>\n<b class=\"spoiler_title\">\u0158e\u0161en\u00ed<\/b><\/p>\n<pre><code class=\"sql\">SELECT first_name,\n       NVL2 (\n           end_date,\n           TO_CHAR (end_date, 'fm\"\"Opustil spole\u010dnost v\"\" DD \"\"m\u011bs\u00edce\"\" YYYY'),\n           'V sou\u010dasnosti pracuje')\n           status\n  FROM employees e LEFT JOIN job_history j ON (e.employee_id = j.employee_id);\n<\/code><\/pre>\n<p>Tabulka Zam\u011bstnanci, Odd\u011blen\u00ed, Lokace, Zem\u011b, Regiony. Z\u00edskat seznam zam\u011bstnanc\u016f, kte\u0159\u00ed \u017eij\u00ed v Evrop\u011b (region_name)<br \/>\n<b class=\"spoiler_title\">\u0158e\u0161en\u00ed<\/b><\/p>\n<pre><code class=\"sql\"> SELECT first_name\n  FROM employees\n       JOIN departments USING (department_id)\n       JOIN locations USING (location_id)\n       JOIN countries USING (country_id)\n       JOIN regions USING (region_id)\n WHERE region_name = 'Europe';\n \n SELECT first_name\n  FROM employees e\n       JOIN departments d ON (e.department_id = d.department_id)\n       JOIN locations l ON (d.location_id = l.location_id)\n       JOIN countries c ON (l.country_id = c.country_id)\n       JOIN regions r ON (c.region_id = r.region_id)\n WHERE region_name = 'Europe';\n<\/code><\/pre>\n<p>Tabulka Zam\u011bstnanci, Odd\u011blen\u00ed. Zobrazit v\u0161echna odd\u011blen\u00ed, ve kter\u00fdch pracuje v\u00edce ne\u017e 30 zam\u011bstnanc\u016f<br \/>\n<b class=\"spoiler_title\">\u0158e\u0161en\u00ed<\/b><\/p>\n<pre><code class=\"sql\">SELECT department_name, COUNT (*)\n    FROM employees e JOIN departments d ON (e.department_id = d.department_id)\nGROUP BY department_name\n  HAVING COUNT (*) &gt; 30;\n<\/code><\/pre>\n<p>Tabulka Zam\u011bstnanci, Odd\u011blen\u00ed. Zobrazit v\u0161echny zam\u011bstnance, kte\u0159\u00ed nejsou v \u017e\u00e1dn\u00e9m odd\u011blen\u00ed<br \/>\n<b class=\"spoiler_title\">\u0158e\u0161en\u00ed<\/b><\/p>\n<pre><code class=\"sql\">SELECT first_name\n  FROM employees e\n       LEFT JOIN departments d ON (e.department_id = d.department_id)\n WHERE d.department_name IS NULL;\n\nSELECT first_name\n  FROM employees\n WHERE department_id IS NULL;\n<\/code><\/pre>\n<p>Tabulka Zam\u011bstnanci, Odd\u011blen\u00ed. Zobrazit v\u0161echna odd\u011blen\u00ed, ve kter\u00fdch nejsou \u017e\u00e1dn\u00ed zam\u011bstnanci<br \/>\n<b class=\"spoiler_title\">\u0158e\u0161en\u00ed<\/b><\/p>\n<pre><code class=\"sql\">SELECT department_name\n  FROM employees e\n       RIGHT JOIN departments d ON (e.department_id = d.department_id)\n WHERE first_name IS NULL;\n<\/code><\/pre>\n<p>Tabulka Zam\u011bstnanci. Zobrazit v\u0161echny zam\u011bstnance, kte\u0159\u00ed nemaj\u00ed nikoho pod sebou<br \/>\n<b class=\"spoiler_title\">\u0158e\u0161en\u00ed<\/b><\/p>\n<pre><code class=\"sql\">SELECT man.first_name\n  FROM employees emp\n       RIGHT JOIN employees man ON (emp.manager_id = man.employee_id)\n WHERE emp.FIRST_NAME IS NULL;\n<\/code><\/pre>\n<p>Tabulka Zam\u011bstnanci, Pr\u00e1ce, Odd\u011blen\u00ed. Zobrazit zam\u011bstnance ve form\u00e1tu: Jm\u00e9no, N\u00e1zev pr\u00e1ce, N\u00e1zev odd\u011blen\u00ed.<br \/>\nP\u0159\u00edklad:<br \/>\nJm\u00e9no | N\u00e1zev pr\u00e1ce | N\u00e1zev odd\u011blen\u00ed<br \/>\nDonald | Doprava | Klient Dopravy<br \/>\n<b class=\"spoiler_title\">\u0158e\u0161en\u00ed<\/b><\/p>\n<pre><code class=\"sql\">SELECT first_name, job_title, department_name\n  FROM employees e\n       JOIN jobs j ON (e.job_id = j.job_id)\n       JOIN departments d ON (d.department_id = e.department_id);\n<\/code><\/pre>\n<p>Tabulka Zam\u011bstnanci. Z\u00edskat seznam zam\u011bstnanc\u016f, jejich\u017e mana\u017ee\u0159i byli najati v roce 2005, ale sami byli najati p\u0159ed rokem 2005<br \/>\n<b class=\"spoiler_title\">\u0158e\u0161en\u00ed<\/b><\/p>\n<pre><code class=\"sql\">SELECT emp.*\n  FROM employees emp JOIN employees man ON (emp.manager_id = man.employee_id)\n WHERE TO_CHAR (man.hire_date, 'YYYY') = '2005'\n       AND emp.hire_date &lt; TO_DATE (&#039;01012005&#039;, &#039;DDMMYYYY&#039;);\n<\/code><\/pre>\n<p>Tabulka zam\u011bstnanc\u016f. Z\u00edskat seznam zam\u011bstnanc\u016f, jejich\u017e mana\u017ee\u0159i byli p\u0159ijati do zam\u011bstn\u00e1n\u00ed v lednu jak\u00e9hokoli roku a d\u00e9lka job_title t\u011bchto zam\u011bstnanc\u016f je v\u011bt\u0161\u00ed ne\u017e 15 znak\u016f.<br \/>\n<b class=\"spoiler_title\">\u0158e\u0161en\u00ed<\/b><\/p>\n<pre><code class=\"sql\">SELECT emp.*\n  FROM employees emp\n       JOIN employees man ON (emp.manager_id = man.employee_id)\n       JOIN jobs j ON (emp.job_id = j.job_id)\n WHERE TO_CHAR (man.hire_date, 'MM') = '01' AND LENGTH (j.job_title) &gt; 15;\n<\/code><\/pre>\n<p>\n<b>Pou\u017e\u00edv\u00e1n\u00ed poddotaz\u016f k \u0159e\u0161en\u00ed dotaz\u016f<\/b><\/p>\n<p>Tabulka zam\u011bstnanc\u016f. Z\u00edskat seznam zam\u011bstnanc\u016f s nejdel\u0161\u00edm jm\u00e9nem.<br \/>\n<b class=\"spoiler_title\">\u0158e\u0161en\u00ed<\/b><\/p>\n<pre><code class=\"sql\">SELECT *\n  FROM employees\n WHERE LENGTH (first_name) =\n       (SELECT MAX (LENGTH (first_name)) FROM employees);\n<\/code><\/pre>\n<p>Tabulka zam\u011bstnanc\u016f. Z\u00edskat seznam zam\u011bstnanc\u016f s platem vy\u0161\u0161\u00edm ne\u017e pr\u016fm\u011brn\u00fd plat v\u0161ech zam\u011bstnanc\u016f.<br \/>\n<b class=\"spoiler_title\">\u0158e\u0161en\u00ed<\/b><\/p>\n<pre><code class=\"sql\">SELECT *\n  FROM employees\n WHERE salary &gt; (SELECT AVG (salary) FROM employees);\n<\/code><\/pre>\n<p>Tabulka zam\u011bstnanc\u016f, odd\u011blen\u00ed, lokace. Z\u00edskat m\u011bsto, ve kter\u00e9m zam\u011bstnanci celkov\u011b vyd\u011bl\u00e1vaj\u00ed nejm\u00e9n\u011b.<br \/>\n<b class=\"spoiler_title\">\u0158e\u0161en\u00ed<\/b><\/p>\n<pre><code class=\"sql\">SELECT city\n    FROM employees e\n         JOIN departments d ON (e.department_id = d.department_id)\n         JOIN locations l ON (d.location_id = l.location_id)\nGROUP BY city\n  HAVING SUM (salary) =\n         (  SELECT MIN (SUM (salary))\n              FROM employees e\n                   JOIN departments d ON (e.department_id = d.department_id)\n                   JOIN locations l ON (d.location_id = l.location_id)\n          GROUP BY city);\n<\/code><\/pre>\n<p>Tabulka zam\u011bstnanc\u016f. Z\u00edskat seznam zam\u011bstnanc\u016f, jejich\u017e mana\u017eer vyd\u011bl\u00e1v\u00e1 v\u00edce ne\u017e 15000.<br \/>\n<b class=\"spoiler_title\">\u0158e\u0161en\u00ed<\/b><\/p>\n<pre><code class=\"sql\">SELECT *\n  FROM employees\n WHERE manager_id IN (SELECT employee_id\n                        FROM employees\n                       WHERE salary &gt; 15000)\n<\/code><\/pre>\n<p>Tabulka Zam\u011bstnanci, Odd\u011blen\u00ed. Zobrazit v\u0161echna odd\u011blen\u00ed, ve kter\u00fdch nejsou \u017e\u00e1dn\u00ed zam\u011bstnanci<br \/>\n<b class=\"spoiler_title\">\u0158e\u0161en\u00ed<\/b><\/p>\n<pre><code class=\"sql\">SELECT *\n  FROM departments\n WHERE department_id NOT IN (SELECT department_id\n                               FROM employees\n                              WHERE department_id IS NOT NULL);\n<\/code><\/pre>\n<p>Tabulka zam\u011bstnanc\u016f. Zobrazit v\u0161echny zam\u011bstnance, kte\u0159\u00ed nejsou mana\u017eery.<br \/>\n<b class=\"spoiler_title\">\u0158e\u0161en\u00ed<\/b><\/p>\n<pre><code class=\"sql\">SELECT *\n  FROM employees\n WHERE employee_id NOT IN (SELECT manager_id\n                             FROM employees\n                            WHERE manager_id IS NOT NULL)\n<\/code><\/pre>\n<p>Tabulka Employees. Zobrazit v\u0161echny mana\u017eery, kte\u0159\u00ed maj\u00ed pod\u0159\u00edzen\u00fdch v\u00edce ne\u017e 6<br \/>\n<b class=\"spoiler_title\">\u0158e\u0161en\u00ed<\/b><\/p>\n<pre><code class=\"sql\">SELECT *\n  FROM employees e\n WHERE (SELECT COUNT (*)\n          FROM employees\n         WHERE manager_id = e.employee_id) &gt; 6;\n<\/code><\/pre>\n<p>Tabulka zam\u011bstnanc\u016f, odd\u011blen\u00ed. Zobrazit zam\u011bstnance, kte\u0159\u00ed pracuj\u00ed v odd\u011blen\u00ed IT.<br \/>\n<b class=\"spoiler_title\">\u0158e\u0161en\u00ed<\/b><\/p>\n<pre><code class=\"sql\">SELECT *\n  FROM employees\n WHERE department_id = (SELECT department_id\n                          FROM departments\n                         WHERE department_name = 'IT');\n<\/code><\/pre>\n<p>Tabulka Zam\u011bstnanci, Pr\u00e1ce, Odd\u011blen\u00ed. Zobrazit zam\u011bstnance ve form\u00e1tu: Jm\u00e9no, N\u00e1zev pr\u00e1ce, N\u00e1zev odd\u011blen\u00ed.<br \/>\nP\u0159\u00edklad:<br \/>\nJm\u00e9no | N\u00e1zev pr\u00e1ce | N\u00e1zev odd\u011blen\u00ed<br \/>\nDonald | Doprava | Klient Dopravy<br \/>\n<b class=\"spoiler_title\">\u0158e\u0161en\u00ed<\/b><\/p>\n<pre><code class=\"sql\">SELECT first_name,\n       (SELECT job_title\n          FROM jobs\n         WHERE job_id = e.job_id)\n           job_title,\n       (SELECT department_name\n          FROM departments\n         WHERE department_id = e.department_id)\n           department_name\n  FROM employees e;\n<\/code><\/pre>\n<p>Tabulka Zam\u011bstnanci. Z\u00edskat seznam zam\u011bstnanc\u016f, jejich\u017e mana\u017ee\u0159i byli najati v roce 2005, ale sami byli najati p\u0159ed rokem 2005<br \/>\n<b class=\"spoiler_title\">\u0158e\u0161en\u00ed<\/b><\/p>\n<pre><code class=\"sql\">SELECT *\n  FROM employees\n WHERE     manager_id IN (SELECT employee_id\n                            FROM employees\n                           WHERE TO_CHAR (hire_date, 'YYYY') = '2005')\n       AND hire_date &lt; TO_DATE (&#039;01012005&#039;, &#039;DDMMYYYY&#039;);\n<\/code><\/pre>\n<p>Tabulka zam\u011bstnanc\u016f. Z\u00edskat seznam zam\u011bstnanc\u016f, jejich\u017e mana\u017ee\u0159i byli p\u0159ijati do zam\u011bstn\u00e1n\u00ed v lednu jak\u00e9hokoli roku a d\u00e9lka job_title t\u011bchto zam\u011bstnanc\u016f je v\u011bt\u0161\u00ed ne\u017e 15 znak\u016f.<br \/>\n<b class=\"spoiler_title\">\u0158e\u0161en\u00ed<\/b><\/p>\n<pre><code class=\"sql\">SELECT *\n  FROM employees e\n WHERE     manager_id IN (SELECT employee_id\n                            FROM employees\n                           WHERE TO_CHAR (hire_date, 'MM') = '01')\n       AND (SELECT LENGTH (job_title)\n              FROM jobs\n             WHERE job_id = e.job_id) &gt; 15;\n<\/code><\/pre>\n<p>\n<b>To je prozat\u00edm v\u0161echno.<\/b><\/p>\n<p>Douf\u00e1m, \u017ee \u00fakoly byly zaj\u00edmav\u00e9 a poutav\u00e9. <br \/>\nBudou-li mo\u017enosti, budu tento seznam \u00fakol\u016f dopl\u0148ovat.<br \/>\nTak\u00e9 bych uv\u00edtal jak\u00e9koli pozn\u00e1mky a n\u00e1vrhy.<\/p>\n<p>P.S.: Pokud n\u011bkoho napadne zaj\u00edmav\u00fd \u00fakol na SELECT, napi\u0161te do koment\u00e1\u0159\u016f, p\u0159id\u00e1m ho do seznamu.<\/p>\n<p>D\u011bkuji.<br \/>\n<br \/>Zdroj: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/461567\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0417\u0434\u0440\u0430\u0432\u0441\u0442\u0432\u0443\u0439, \u0425\u0430\u0431\u0440! \u0412\u043e\u0442 \u0443\u0436\u0435 \u0431\u043e\u043b\u0435\u0435 3-\u0445 \u043b\u0435\u0442 \u044f \u043f\u0440\u0435\u043f\u043e\u0434\u0430\u044e SQL \u0432 \u0440\u0430\u0437\u043d\u044b\u0445 \u0442\u0440\u0435\u043d\u0438\u043d\u0433 \u0446\u0435\u043d\u0442\u0440\u0430\u0445, \u0438 \u043e\u0434\u043d\u0438\u043c \u0438\u0437 \u043c\u043e\u0438\u0445 \u043d\u0430\u0431\u043b\u044e\u0434\u0435\u043d\u0438\u0439 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0442\u043e, \u0447\u0442\u043e \u0441\u0442\u0443\u0434\u0435\u043d\u0442\u044b \u043e\u0441\u0432\u0430\u0438\u0432\u0430\u044e\u0442 \u0438 \u043f\u043e\u043d\u0438\u043c\u0430\u044e\u0442 SQL \u043b\u0443\u0447\u0448\u0435, \u0435\u0441\u043b\u0438 \u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043f\u0435\u0440\u0435\u0434 \u043d\u0438\u043c\u0438 \u0437\u0430\u0434\u0430\u0447\u0443, \u0430 \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044f\u0445 \u0438 \u0442\u0435\u043e\u0440\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043e\u0441\u043d\u043e\u0432\u0430\u0445. \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u043f\u043e\u0434\u0435\u043b\u044e\u0441\u044c \u0441 \u0432\u0430\u043c\u0438 \u0441\u0432\u043e\u0438\u043c \u0441\u043f\u0438\u0441\u043a\u043e\u043c \u0437\u0430\u0434\u0430\u0447, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u044f \u0434\u0430\u044e [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":27465,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[702],"tags":[],"class_list":["post-36671","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-news"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.3 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0417\u0434\u0440\u0430\u0432\u0441\u0442\u0432\u0443\u0439, \u0425\u0430\u0431\u0440! \u0412\u043e\u0442 \u0443\u0436\u0435 \u0431\u043e\u043b\u0435\u0435 3-\u0445 \u043b\u0435\u0442 \u044f \u043f\u0440\u0435\u043f\u043e\u0434\u0430\u044e SQL \u0432 \u0440\u0430\u0437\u043d\u044b\u0445 \u0442\u0440\u0435\u043d\u0438\u043d\u0433 \u0446\u0435\u043d\u0442\u0440\u0430\u0445, \u0438 \u043e\u0434\u043d\u0438\u043c \u0438\u0437 \u043c\u043e\u0438\u0445 \u043d\u0430\u0431\u043b\u044e\u0434\u0435\u043d\u0438\u0439 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0442\u043e, \u0447\u0442\u043e \u0441\u0442\u0443\u0434\u0435\u043d\u0442\u044b \u043e\u0441\u0432\u0430\u0438\u0432\u0430\u044e\u0442 \u0438 \u043f\u043e\u043d\u0438\u043c\u0430\u044e\u0442 SQL \u043b\u0443\u0447\u0448\u0435, \u0435\u0441\u043b\u0438 \u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043f\u0435\u0440\u0435\u0434 \u043d\u0438\u043c\u0438 \u0437\u0430\u0434\u0430\u0447\u0443, \u0430 \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/cs\/blog\/news\/sql-zanimatelnye-zadachki\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"cs_CZ\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47SQL. \u0417\u0430\u043d\u0438\u043c\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0437\u0430\u0434\u0430\u0447\u043a\u0438 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0417\u0434\u0440\u0430\u0432\u0441\u0442\u0432\u0443\u0439, \u0425\u0430\u0431\u0440! \u0412\u043e\u0442 \u0443\u0436\u0435 \u0431\u043e\u043b\u0435\u0435 3-\u0445 \u043b\u0435\u0442 \u044f \u043f\u0440\u0435\u043f\u043e\u0434\u0430\u044e SQL \u0432 \u0440\u0430\u0437\u043d\u044b\u0445 \u0442\u0440\u0435\u043d\u0438\u043d\u0433 \u0446\u0435\u043d\u0442\u0440\u0430\u0445, \u0438 \u043e\u0434\u043d\u0438\u043c \u0438\u0437 \u043c\u043e\u0438\u0445 \u043d\u0430\u0431\u043b\u044e\u0434\u0435\u043d\u0438\u0439 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0442\u043e, \u0447\u0442\u043e \u0441\u0442\u0443\u0434\u0435\u043d\u0442\u044b \u043e\u0441\u0432\u0430\u0438\u0432\u0430\u044e\u0442 \u0438 \u043f\u043e\u043d\u0438\u043c\u0430\u044e\u0442 SQL \u043b\u0443\u0447\u0448\u0435, \u0435\u0441\u043b\u0438 \u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043f\u0435\u0440\u0435\u0434 \u043d\u0438\u043c\u0438 \u0437\u0430\u0434\u0430\u0447\u0443, \u0430 \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/cs\/blog\/news\/sql-zanimatelnye-zadachki\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T19:13:01+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:13:01+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47SQL. Z\u00e1bavn\u00e9 \u00fakoly | ProHoster","description":"Ahoj, Habr! U\u017e v\u00edce ne\u017e 3 roky u\u010d\u00edm SQL v r\u016fzn\u00fdch tr\u00e9ninkov\u00fdch centrech a jedn\u00edm z m\u00fdch pozorov\u00e1n\u00ed je, \u017ee studenti zvl\u00e1daj\u00ed a ch\u00e1pou SQL l\u00e9pe, kdy\u017e maj\u00ed p\u0159ed sebou \u00fakol, a ne jen tak.","canonical_url":"https:\/\/prohoster.info\/cs\/blog\/news\/sql-zanimatelnye-zadachki","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"cs_CZ","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47SQL. \u0417\u0430\u043d\u0438\u043c\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0437\u0430\u0434\u0430\u0447\u043a\u0438 | ProHoster","og:description":"\u0417\u0434\u0440\u0430\u0432\u0441\u0442\u0432\u0443\u0439, \u0425\u0430\u0431\u0440! \u0412\u043e\u0442 \u0443\u0436\u0435 \u0431\u043e\u043b\u0435\u0435 3-\u0445 \u043b\u0435\u0442 \u044f \u043f\u0440\u0435\u043f\u043e\u0434\u0430\u044e SQL \u0432 \u0440\u0430\u0437\u043d\u044b\u0445 \u0442\u0440\u0435\u043d\u0438\u043d\u0433 \u0446\u0435\u043d\u0442\u0440\u0430\u0445, \u0438 \u043e\u0434\u043d\u0438\u043c \u0438\u0437 \u043c\u043e\u0438\u0445 \u043d\u0430\u0431\u043b\u044e\u0434\u0435\u043d\u0438\u0439 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0442\u043e, \u0447\u0442\u043e \u0441\u0442\u0443\u0434\u0435\u043d\u0442\u044b \u043e\u0441\u0432\u0430\u0438\u0432\u0430\u044e\u0442 \u0438 \u043f\u043e\u043d\u0438\u043c\u0430\u044e\u0442 SQL \u043b\u0443\u0447\u0448\u0435, \u0435\u0441\u043b\u0438 \u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043f\u0435\u0440\u0435\u0434 \u043d\u0438\u043c\u0438 \u0437\u0430\u0434\u0430\u0447\u0443, \u0430 \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e.","og:url":"https:\/\/prohoster.info\/cs\/blog\/news\/sql-zanimatelnye-zadachki","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T19:13:01+00:00","article:modified_time":"2019-10-31T19:13:01+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"36671","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-22 04:21:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 01:40:23","updated":"2026-01-22 04:21:19","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts\/36671","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/comments?post=36671"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts\/36671\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/media\/27465"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/media?parent=36671"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/categories?post=36671"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/tags?post=36671"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}