{"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\/sl\/blog\/news\/sql-zanimatelnye-zadachki","title":{"rendered":"SQL. Engaging tasks","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Zdravo, Habr!<\/p>\n<p>Ve\u0107 vi\u0161e od 3 godine predajem SQL u razli\u010ditim trening centrima, a jedno od mojih zapa\u017eanja je da studenti bolje savladaju i razumeju SQL kada im postavimo zadatak, a ne kada im samo pri\u010damo o mogu\u0107nostima i teorijskim osnovama.<\/p>\n<p>U ovom \u010dlanku \u0107u podeliti sa vama svoj spisak zadataka koje dajem studentima kao doma\u0107i zadatak i o kojima vr\u0161imo razli\u010dite brainstorming sesije, \u0161to dovodi do dubokog i jasnog razumevanja SQL-a.<\/p>\n<p><img decoding=\"async\" alt=\"SQL. Engaging tasks\" src=\"\/wp-content\/uploads\/2019\/07\/283f472e0c382c0621ffc14e2ac06881.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSQL (\u02c8\u025bs\u02c8kju\u02c8\u025bl; eng. structured query language \u2014 \u201ejezik strukturiranih upita\u201c) \u2014 deklarativni programski jezik, koji se koristi za kreiranje, modifikaciju i upravljanje podacima u relacijskim bazama podataka, kojima upravlja odgovaraju\u0107i sistem za upravljanje bazama podataka. <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/SQL\">Ve\u010d\u2026 <\/a><\/noindex><\/p>\n<p>O SQL-u se mo\u017ee \u010ditati na razli\u010dite <noindex><a rel=\"nofollow\" href=\"https:\/\/www.google.com\/search?q=SQL\">virov<\/a><\/noindex>.<br \/>\nOvaj \u010dlanak nije usmeren na to da vas nau\u010di SQL od nule.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nIzogibajte se na kilometrsko oddaljenosti dr\u017eavnim in pol dr\u017eavnim podjetjem ter podobnim ustanovam.<\/p>\n<p>Koristi\u0107emo svima poznatu <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/oracle\/db-sample-schemas\/tree\/master\/human_resources\">HR \u0161emu<\/a><\/noindex> u Oracle-u sa njenim tabelama (<noindex><a rel=\"nofollow\" href=\"https:\/\/docs.oracle.com\/en\/database\/oracle\/oracle-database\/12.2\/comsc\/HR-sample-schema-table-descriptions.html\">Ve\u010d informacij<\/a><\/noindex>):<\/p>\n<p><img decoding=\"async\" alt=\"SQL. Engaging tasks\" src=\"\/wp-content\/uploads\/2019\/07\/b518c0bedd0d7bbeaedbcc4bd95079cd.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nNapominjem da \u0107emo razmatrati samo zadatke na SELECT. Ovdje nema zadataka na DML i DDL.<\/p>\n<h2>Zadaci<\/h2>\n<p>\n<b>Ograni\u010davanje i sortiranje podataka<\/b><\/p>\n<p>Tabela Employees. Dobiti spisak sa informacijama o svim zaposlenima <br \/>\n<b class=\"spoiler_title\">Solution<\/b><\/p>\n<pre><code class=\"sql\">SELECT * FROM employees\n<\/code><\/pre>\n<p>Tabela Zaposlenih. Dobiti spisak svih zaposlenih sa imenom 'David'<br \/>\n<b class=\"spoiler_title\">Solution<\/b><\/p>\n<pre><code class=\"sql\">SELECT *\n  FROM employees\n WHERE first_name = 'David';\n<\/code><\/pre>\n<p>Tabela Zaposlenih. Dobiti spisak svih zaposlenih sa job_id jednakim 'IT_PROG'<br \/>\n<b class=\"spoiler_title\">Solution<\/b><\/p>\n<pre><code class=\"sql\">SELECT *\n  FROM employees\n WHERE job_id = 'IT_PROG'\n<\/code><\/pre>\n<p>Tabela Employees. Dobiti spisak svih zaposlenih iz 50. odeljenja (department_id) sa platom (salary) ve\u0107om od 4000<br \/>\n<b class=\"spoiler_title\">Solution<\/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>Tabela Employees. Dobiti spisak svih zaposlenih iz 20. i 30. odeljenja (department_id)<br \/>\n<b class=\"spoiler_title\">Solution<\/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>Tabela Zaposlenih. Dobiti spisak svih zaposlenih \u010dije ime se zavr\u0161ava na slovo 'a'<br \/>\n<b class=\"spoiler_title\">Solution<\/b><\/p>\n<pre><code class=\"sql\">SELECT *\n  FROM employees\n WHERE first_name LIKE '%a';\n<\/code><\/pre>\n<p>Tabela Employees. Dobiti spisak svih zaposlenih iz 50. i 80. odeljenja (department_id) koji imaju bonus (vrednost u koloni commission_pct nije prazna)<br \/>\n<b class=\"spoiler_title\">Solution<\/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>Tabela Zaposlenih. Dobiti spisak svih zaposlenih koji u imenu sadr\u017ee bar 2 slova 'n'<br \/>\n<b class=\"spoiler_title\">Solution<\/b><\/p>\n<pre><code class=\"sql\">SELECT *\n  FROM employees\n WHERE first_name LIKE '%n%n%';\n<\/code><\/pre>\n<p>Tabela Employees. Dobiti spisak svih zaposlenih \u010dije ime ima vi\u0161e od 4 slova<br \/>\n<b class=\"spoiler_title\">Solution<\/b><\/p>\n<pre><code class=\"sql\">SELECT *\n  FROM employees\n WHERE first_name LIKE '%_____%';\n<\/code><\/pre>\n<p>Tabela Employees. Dobiti spisak svih zaposlenih \u010dija plata se kre\u0107e izme\u0111u 8000 i 9000 (uklju\u010divo)<br \/>\n<b class=\"spoiler_title\">Solution<\/b><\/p>\n<pre><code class=\"sql\">SELECT *\n  FROM employees\n WHERE salary BETWEEN 8000 AND 9000;\n<\/code><\/pre>\n<p>Tabela Zaposlenih. Dobiti spisak svih zaposlenih koji u imenu sadr\u017ee simbol '%'<br \/>\n<b class=\"spoiler_title\">Solution<\/b><\/p>\n<pre><code class=\"sql\">SELECT *\n  FROM employees\n WHERE first_name LIKE '%%%' ESCAPE '';\n<\/code><\/pre>\n<p>Tabela Employees. Pridobite seznam vseh ID-jev managerjev<br \/>\n<b class=\"spoiler_title\">Solution<\/b><\/p>\n<pre><code class=\"sql\">SELECT DISTINCT manager_id\n  FROM employees\n WHERE manager_id IS NOT NULL;\n<\/code><\/pre>\n<p>Tabela Employees. Pridobite seznam delavcev s pozicijami v formatu: Donald(sh_clerk)<br \/>\n<b class=\"spoiler_title\">Solution<\/b><\/p>\n<pre><code class=\"sql\">SELECT first_name || '(' || LOWER (job_id) || ')' employee FROM employees;\n<\/code><\/pre>\n<p>\n<b>Uporaba enovrsti\u010dnih funkcij za prilagoditev izhoda<\/b><\/p>\n<p>Tabela Employees. Pridobite seznam vseh zaposlenih, katerih dol\u017eina imena je ve\u010dja od 10 \u010drk<br \/>\n<b class=\"spoiler_title\">Solution<\/b><\/p>\n<pre><code class=\"sql\">SELECT *\n  FROM employees\n WHERE LENGTH (first_name) &gt; 10;\n<\/code><\/pre>\n<p>Tabela Zaposlenih. Dobiti spisak svih zaposlenih koji u imenu imaju slovo 'b' (ne obra\u0107aju\u0107i pa\u017enju na velika i mala slova)<br \/>\n<b class=\"spoiler_title\">Solution<\/b><\/p>\n<pre><code class=\"sql\">SELECT *\n  FROM employees\n WHERE INSTR (LOWER (first_name), 'b') &gt; 0;\n<\/code><\/pre>\n<p>Tabela Zaposlenih. Dobiti spisak svih zaposlenih koji u imenu sadr\u017ee bar 2 slova 'a'<br \/>\n<b class=\"spoiler_title\">Solution<\/b><\/p>\n<pre><code class=\"sql\">SELECT *\n  FROM employees\n WHERE INSTR (LOWER (first_name),'a',1,2) &gt; 0;\n<\/code><\/pre>\n<p>Tabela Employees. Pridobite seznam vseh zaposlenih, katerih pla\u010da je deljiva z 1000<br \/>\n<b class=\"spoiler_title\">Solution<\/b><\/p>\n<pre><code class=\"sql\">SELECT *\n  FROM employees\n WHERE MOD (salary, 1000) = 0;\n<\/code><\/pre>\n<p>Tabela Employees. Pridobite prvih 3 \u0161tevilke telefonske \u0161tevilke zaposlenega, \u010de je njegov \u0161tevilka v formatu XXX.XXX.XXXX<br \/>\n<b class=\"spoiler_title\">Solution<\/b><\/p>\n<pre><code class=\"sql\">SELECT phone_number, SUBSTR (phone_number, 1, 3) new_phone_number\n  FROM employees\n WHERE phone_number LIKE '___.___.____';\n<\/code><\/pre>\n<p>Tabela Departments. Pridobite prvo besedo iz imena oddelka za tiste, katerih ime vsebuje ve\u010d kot eno besedo<br \/>\n<b class=\"spoiler_title\">Solution<\/b><\/p>\n<pre><code class=\"sql\">SELECT department_name,\n       SUBSTR (department_name, 1, INSTR (department_name, ' ')-1)\n           first_word\n  FROM departments\n WHERE INSTR (department_name, ' ') &gt; 0;\n<\/code><\/pre>\n<p>Tabela Employees. Pridobite imena zaposlenih brez prve in zadnje \u010drke v imenu<br \/>\n<b class=\"spoiler_title\">Solution<\/b><\/p>\n<pre><code class=\"sql\">SELECT first_name, SUBSTR (first_name, 2, LENGTH (first_name) - 2) new_name\n  FROM employees;\n<\/code><\/pre>\n<p>Tabela Zaposlenih. Dobiti spisak svih zaposlenih \u010dije ime zavr\u0161ava na 'm' i du\u017eina imena je ve\u0107a od 5<br \/>\n<b class=\"spoiler_title\">Solution<\/b><\/p>\n<pre><code class=\"sql\">SELECT *\n  FROM employees\n WHERE SUBSTR (first_name, -1) = 'm' AND LENGTH(first_name) &gt; 5;\n<\/code><\/pre>\n<p>Tabela Dual. Pridobite datum naslednjega petka<br \/>\n<b class=\"spoiler_title\">Solution<\/b><\/p>\n<pre><code class=\"sql\">SELECT NEXT_DAY (SYSDATE, 'FRIDAY') next_friday FROM DUAL;\n<\/code><\/pre>\n<p>Tabela Employees. Pridobite seznam vseh zaposlenih, ki delajo v podjetju ve\u010d kot 17 let<br \/>\n<b class=\"spoiler_title\">Solution<\/b><\/p>\n<pre><code class=\"sql\">SELECT *\n  FROM employees\n WHERE MONTHS_BETWEEN (SYSDATE, hire_date) \/ 12 &gt; 17;\n<\/code><\/pre>\n<p>Tabela Employees. Pridobite seznam vseh zaposlenih, katerih zadnja cifra telefonske \u0161tevilke je liha in je sestavljena iz 3 \u0161tevilk, lo\u010denih s piko<br \/>\n<b class=\"spoiler_title\">Solution<\/b><\/p>\n<pre><code class=\"sql\">SELECT *\n  FROM employees\n WHERE     MOD (SUBSTR (phone_number, -1), 2) != 0\n       AND INSTR (phone_number,'.',1,3) = 0;\n<\/code><\/pre>\n<p>Tabela Zaposlenih. Dobiti spisak svih zaposlenih kod kojih u vrednosti job_id posle znaka '_' ima bar 3 simbola, ali ta vrednost posle '_' nije jednaka 'CLERK'<br \/>\n<b class=\"spoiler_title\">Solution<\/b><\/p>\n<pre><code class=\"sql\">IZABERITE *\n  IZ zaposlenici\n GDE     DU\u017dINA (SUBSTR (job_id, INSTR (job_id, '_') + 1)) &gt; 3\n       I SUBSTR (job_id, INSTR (job_id, '_') + 1) != 'CLERK';\n<\/code><\/pre>\n<p>Tabela Zaposlenih. Dobiti spisak svih zaposlenih zameniv\u0161i sve '.' u vrednosti PHONE_NUMBER sa '-'<br \/>\n<b class=\"spoiler_title\">Solution<\/b><\/p>\n<pre><code class=\"sql\">IZABERITE telefon_broj, ZAMENITI (telefon_broj, '.', '-') novi_telefon_broj\n  IZ zaposlenici;\n<\/code><\/pre>\n<p>\n<b>Kori\u0161\u0107enje funkcija konverzije i uslovnih izraza<\/b><\/p>\n<p>Tabela Zaposlenici. Prikazati spisak svih zaposlenih koji su po\u010deli da rade prvog dana meseca (bilo kog)<br \/>\n<b class=\"spoiler_title\">Solution<\/b><\/p>\n<pre><code class=\"sql\">IZABERITE *\n  IZ zaposlenici\n GDE TO_CHAR (datum_zapo\u0161ljavanja, 'DD') = '01';\n<\/code><\/pre>\n<p>Tabela Zaposlenici. Prikazati spisak svih zaposlenih koji su po\u010deli da rade 2008. godine<br \/>\n<b class=\"spoiler_title\">Solution<\/b><\/p>\n<pre><code class=\"sql\">IZABERITE *\n  IZ zaposlenici\n GDE TO_CHAR (datum_zapo\u0161ljavanja, 'YYYY') = '2008';\n<\/code><\/pre>\n<p>Tabela DUAL. Prikazati sutra\u0161nji datum u formatu: Sutra je Drugi dan Januara<br \/>\n<b class=\"spoiler_title\">Solution<\/b><\/p>\n<pre><code class=\"sql\">IZABERITE TO_CHAR (SYSDATE, 'fm\"\"Sutra je \"\"Ddspth \"\"dan od\"\" Mesec')     info\n  IZ DUAL;\n<\/code><\/pre>\n<p>Tabela Zaposlenici. Prikazati spisak svih zaposlenih i datum po\u010detka rada svakog u formatu: 21. jun 2007.<br \/>\n<b class=\"spoiler_title\">Solution<\/b><\/p>\n<pre><code class=\"sql\">IZABERITE ime, TO_CHAR (datum_zapo\u0161ljavanja, 'fmddth \"\"od\"\" Mesec, YYYY') datum_zapo\u0161ljavanja\n  IZ zaposlenici;\n<\/code><\/pre>\n<p>Tabela Zaposlenici. Prikazati spisak zaposlenih sa pove\u0107anjem plata od 20%. Platu prikazati sa znakom dolara<br \/>\n<b class=\"spoiler_title\">Solution<\/b><\/p>\n<pre><code class=\"sql\">IZABERITE ime, TO_CHAR (plata + plata * 0.20, 'fm$999,999.00') nova_plata\n  IZ zaposlenici;\n<\/code><\/pre>\n<p>Tabela Zaposlenici. Prikazati spisak svih zaposlenih koji su po\u010deli da rade u februaru 2007. godine.<br \/>\n<b class=\"spoiler_title\">Solution<\/b><\/p>\n<pre><code class=\"sql\">IZABERITE *\n  IZ zaposlenici\n GDE datum_zapo\u0161ljavanja BETWEEN TO_DATE ('01.02.2007', 'DD.MM.YYYY')\n                     I POSLEDNJI_DAN (TO_DATE ('01.02.2007', 'DD.MM.YYYY'));\n\nIZABERITE *\n  IZ zaposlenici\n GDE to_char(datum_zapo\u0161ljavanja,'MM.YYYY') = '02.2007'; \n<\/code><\/pre>\n<p>Tabela DUAL. Prikazati trenutni datum, + sekunda, + minuta, + sat, + dan, + mesec, + godina<br \/>\n<b class=\"spoiler_title\">Solution<\/b><\/p>\n<pre><code class=\"sql\">IZABERITE SYSDATE                          sada,\n       SYSDATE + 1 \/ (24 * 60 * 60)     plus_sekunda,\n       SYSDATE + 1 \/ (24 * 60)          plus_minuta,\n       SYSDATE + 1 \/ 24                 plus_sati,\n       SYSDATE + 1                      plus_dan,\n       ADD_MONTHS (SYSDATE, 1)          plus_mesec,\n       ADD_MONTHS (SYSDATE, 12)         plus_godina\n  IZ DUAL;\n<\/code><\/pre>\n<p>Tabela Zaposlenici. Prikazati spisak svih zaposlenih sa ukupnim platama (plata + commission_pct(%)) u formatu: $24,000.00<br \/>\n<b class=\"spoiler_title\">Solution<\/b><\/p>\n<pre><code class=\"sql\">IZABERITE ime, plata, TO_CHAR (plata + plata * NVL (commission_pct, 0), 'fm$99,999.00') puna_plata\n  IZ zaposlenici;\n<\/code><\/pre>\n<p>Tabela Zaposlenici. Prikazati spisak svih zaposlenih i informaciju o prisutnosti bonusa na platu (Da\/Ne)<br \/>\n<b class=\"spoiler_title\">Solution<\/b><\/p>\n<pre><code class=\"sql\">IZABERITE ime, commission_pct, NVL2 (commission_pct, 'Da', 'Ne') ima_bonus\n  IZ zaposlenici;\n<\/code><\/pre>\n<p>Tabela Zaposlenici. Prikazati nivo plate svakog zaposlenog: Manje od 5000 smatra se Niskim nivoom, Ve\u0107e ili jednako 5000 i manje od 10000 smatra se Normalnim nivoom, Ve\u0107e ili jednako 10000 smatra se Visokim nivoom<br \/>\n<b class=\"spoiler_title\">Solution<\/b><\/p>\n<pre><code class=\"sql\">IZABERITE ime,\n       plata,\n       SLU\u010cAJ\n           KADA plata = 5000 I plata &lt; 10000 THEN &#039;Normalan&#039;\n           DRUGA &#039;Visok&#039;\n       KRAJ nivo_plate\n  IZ zaposlenici;\n<\/code><\/pre>\n<p>Tabela Dr\u017eave. Za svaku zemlju prikazati region u kojem se nalazi: 1-Evropa, 2-Amerika, 3-Asija, 4-Afrika (bez Join)<br \/>\n<b class=\"spoiler_title\">Solution<\/b><\/p>\n<pre><code class=\"sql\">SELECT country_name country,\n       DECODE (region_id,\n               1, 'E\u0432\u0440\u043e\u043f\u0430',\n               2, '\u0410\u043c\u0435\u0440\u0438\u043a\u0430',\n               3, '\u0410\u0437\u0438\u044f',\n               4, '\u0410\u0444\u0440\u0438\u043a\u0430',\n               '\u041d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e')\n           region\n  FROM countries;\n\nSELECT country_name\n           country,\n       CASE region_id\n           WHEN 1 THEN 'E\u0432\u0440\u043e\u043f\u0430'\n           WHEN 2 THEN '\u0410\u043c\u0435\u0440\u0438\u043a\u0430'\n           WHEN 3 THEN '\u0410\u0437\u0438\u044f'\n           WHEN 4 THEN '\u0410\u0444\u0440\u0438\u043a\u0430'\n           ELSE '\u041d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e'\n       END\n           region\n  FROM countries;\n<\/code><\/pre>\n<p>\n<b>\u041e\u0442\u0447\u0435\u0442 \u0430\u0433\u0440\u0435\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0433\u0440\u0443\u043f\u043f\u043e\u0432\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438<\/b><\/p>\n<p>\u0422\u0430\u0431\u043b\u0438\u0446\u0430 \u0421\u043e\u0442\u0440\u0443\u0434\u043d\u0438\u043a\u0438. \u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043e\u0442\u0447\u0435\u0442 \u043f\u043e department_id \u0441 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u0438 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u0437\u0430\u0440\u043f\u043b\u0430\u0442\u043e\u0439, \u0441 \u0440\u0430\u043d\u043d\u0435\u0439 \u0438 \u043f\u043e\u0437\u0434\u043d\u0435\u0439 \u0434\u0430\u0442\u043e\u0439 \u043f\u0440\u0438\u0435\u043c\u0430 \u043d\u0430 \u0440\u0430\u0431\u043e\u0442\u0443 \u0438 \u0441 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e\u043c \u0441\u043e\u0442\u0440\u0443\u0434\u043d\u0438\u043a\u043e\u0432. \u0421\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0443 \u0441\u043e\u0442\u0440\u0443\u0434\u043d\u0438\u043a\u043e\u0432 (\u043f\u043e \u0443\u0431\u044b\u0432\u0430\u043d\u0438\u044e)<br \/>\n<b class=\"spoiler_title\">Solution<\/b><\/p>\n<pre><code class=\"sql\">  SELECT 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    FROM employees\nGROUP BY department_id\norder by count(*) desc;\n<\/code><\/pre>\n<p>\u0422\u0430\u0431\u043b\u0438\u0446\u0430 \u0421\u043e\u0442\u0440\u0443\u0434\u043d\u0438\u043a\u0438. \u0421\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u043e\u0442\u0440\u0443\u0434\u043d\u0438\u043a\u043e\u0432, \u0438\u043c\u0435\u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0442\u0441\u044f \u0441 \u043e\u0434\u043d\u043e\u0439 \u0438 \u0442\u043e\u0439 \u0436\u0435 \u0431\u0443\u043a\u0432\u044b? \u0421\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0443. \u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0435, \u0433\u0434\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0431\u043e\u043b\u044c\u0448\u0435 1<br \/>\n<b class=\"spoiler_title\">Solution<\/b><\/p>\n<pre><code class=\"sql\">SELECT SUBSTR (first_name, 1, 1) first_char, COUNT (*)\n    FROM employees\nGROUP BY SUBSTR (first_name, 1, 1)\n  HAVING COUNT (*) &gt; 1\nORDER BY 2 DESC;\n<\/code><\/pre>\n<p>\u0422\u0430\u0431\u043b\u0438\u0446\u0430 \u0421\u043e\u0442\u0440\u0443\u0434\u043d\u0438\u043a\u0438. \u0421\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u043e\u0442\u0440\u0443\u0434\u043d\u0438\u043a\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u0432 \u043e\u0434\u043d\u043e\u043c \u0438 \u0442\u043e\u043c \u0436\u0435 \u043e\u0442\u0434\u0435\u043b\u0435 \u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u044e\u0442 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u0443\u044e \u0437\u0430\u0440\u043f\u043b\u0430\u0442\u0443?<br \/>\n<b class=\"spoiler_title\">Solution<\/b><\/p>\n<pre><code class=\"sql\">SELECT department_id, salary, COUNT (*)\n    FROM employees\nGROUP BY department_id, salary\n  HAVING COUNT (*) &gt; 1;\n<\/code><\/pre>\n<p>\u0422\u0430\u0431\u043b\u0438\u0446\u0430 \u0421\u043e\u0442\u0440\u0443\u0434\u043d\u0438\u043a\u0438. \u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043e\u0442\u0447\u0435\u0442 \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u043e\u0442\u0440\u0443\u0434\u043d\u0438\u043a\u043e\u0432 \u043f\u0440\u0438\u043d\u044f\u043b\u0438 \u043d\u0430 \u0440\u0430\u0431\u043e\u0442\u0443 \u0432 \u043a\u0430\u0436\u0434\u044b\u0439 \u0434\u0435\u043d\u044c \u043d\u0435\u0434\u0435\u043b\u0438. \u0421\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0443<br \/>\n<b class=\"spoiler_title\">Solution<\/b><\/p>\n<pre><code class=\"sql\">SELECT TO_CHAR (hire_Date, 'Day') day, COUNT (*)\n    FROM employees\nGROUP BY TO_CHAR (hire_Date, 'Day')\nORDER BY 2 DESC;\n<\/code><\/pre>\n<p>\u0422\u0430\u0431\u043b\u0438\u0446\u0430 \u0421\u043e\u0442\u0440\u0443\u0434\u043d\u0438\u043a\u0438. \u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043e\u0442\u0447\u0435\u0442 \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u043e\u0442\u0440\u0443\u0434\u043d\u0438\u043a\u043e\u0432 \u043f\u0440\u0438\u043d\u044f\u043b\u0438 \u043d\u0430 \u0440\u0430\u0431\u043e\u0442\u0443 \u043f\u043e \u0433\u043e\u0434\u0430\u043c. \u0421\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0443<br \/>\n<b class=\"spoiler_title\">Solution<\/b><\/p>\n<pre><code class=\"sql\">SELECT TO_CHAR (hire_date, 'YYYY') year, COUNT (*)\n    FROM employees\nGROUP BY TO_CHAR (hire_date, 'YYYY');\n<\/code><\/pre>\n<p>\u0422\u0430\u0431\u043b\u0438\u0446\u0430 \u0421\u043e\u0442\u0440\u0443\u0434\u043d\u0438\u043a\u0438. \u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0434\u0435\u043f\u0430\u0440\u0442\u0430\u043c\u0435\u043d\u0442\u043e\u0432, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0435\u0441\u0442\u044c \u0441\u043e\u0442\u0440\u0443\u0434\u043d\u0438\u043a\u0438<br \/>\n<b class=\"spoiler_title\">Solution<\/b><\/p>\n<pre><code class=\"sql\">SELECT COUNT (COUNT (*)) department_count\n    FROM employees\n   WHERE department_id IS NOT NULL\nGROUP BY department_id;\n<\/code><\/pre>\n<p>\u0422\u0430\u0431\u043b\u0438\u0446\u0430 \u0421\u043e\u0442\u0440\u0443\u0434\u043d\u0438\u043a\u0438. \u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0441\u043f\u0438\u0441\u043e\u043a department_id, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u0431\u043e\u043b\u044c\u0448\u0435 30 \u0441\u043e\u0442\u0440\u0443\u0434\u043d\u0438\u043a\u043e\u0432<br \/>\n<b class=\"spoiler_title\">Solution<\/b><\/p>\n<pre><code class=\"sql\">  SELECT department_id\n    FROM employees\nGROUP BY department_id\n  HAVING COUNT (*) &gt; 30;\n<\/code><\/pre>\n<p>\u0422\u0430\u0431\u043b\u0438\u0446\u0430 \u0421\u043e\u0442\u0440\u0443\u0434\u043d\u0438\u043a\u0438. \u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0441\u043f\u0438\u0441\u043e\u043a department_id \u0438 \u043e\u043a\u0440\u0443\u0433\u043b\u0435\u043d\u043d\u0443\u044e \u0441\u0440\u0435\u0434\u043d\u044e\u044e \u0437\u0430\u0440\u043f\u043b\u0430\u0442\u0443 \u0440\u0430\u0431\u043e\u0442\u043d\u0438\u043a\u043e\u0432 \u0432 \u043a\u0430\u0436\u0434\u043e\u043c \u0434\u0435\u043f\u0430\u0440\u0442\u0430\u043c\u0435\u043d\u0442\u0435. <br \/>\n<b class=\"spoiler_title\">Solution<\/b><\/p>\n<pre><code class=\"sql\">  SELECT department_id, ROUND (AVG (salary)) avg_salary\n    FROM employees\nGROUP BY department_id;\n<\/code><\/pre>\n<p>\u0422\u0430\u0431\u043b\u0438\u0446\u0430 \u0421\u0442\u0440\u0430\u043d\u044b. \u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0441\u043f\u0438\u0441\u043e\u043a region_id, \u0441\u0443\u043c\u043c\u0430 \u0432\u0441\u0435\u0445 \u0431\u0443\u043a\u0432 \u0432\u0441\u0435\u0445 country_name, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0431\u043e\u043b\u044c\u0448\u0435 60-\u0442\u0438<br \/>\n<b class=\"spoiler_title\">Solution<\/b><\/p>\n<pre><code class=\"sql\">  SELECT region_id\n    FROM countries\nGROUP BY region_id\n  HAVING SUM (LENGTH (country_name)) &gt; 60;\n<\/code><\/pre>\n<p>\u0422\u0430\u0431\u043b\u0438\u0446\u0430 \u0421\u043e\u0442\u0440\u0443\u0434\u043d\u0438\u043a\u0438. \u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0441\u043f\u0438\u0441\u043e\u043a department_id, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u0440\u0430\u0431\u043e\u0442\u043d\u0438\u043a\u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 (&gt;1) job_id<br \/>\n<b class=\"spoiler_title\">Solution<\/b><\/p>\n<pre><code class=\"sql\">  SELECT department_id\n    FROM employees\nGROUP BY department_id\n  HAVING COUNT (DISTINCT job_id) &gt; 1;\n<\/code><\/pre>\n<p>Tabela Zaposlenih. Pribavite listu manager_id koji imaju vi\u0161e od 5 podre\u0111enih i zbir svih plata njihovih podre\u0111enih ve\u0107i od 50000<br \/>\n<b class=\"spoiler_title\">Solution<\/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>Tabela Zaposlenih. Pribavite listu manager_id \u010dija prose\u010dna plata svih podre\u0111enih nalazi se u opsegu od 6000 do 9000 i koji ne primaju bonuse (commission_pct je prazan)<br \/>\n<b class=\"spoiler_title\">Solution<\/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>Tabela Zaposlenih. Dobiti maksimalnu platu od svih zaposlenih sa job_id koji se zavr\u0161ava re\u010dju 'CLERK'<br \/>\n<b class=\"spoiler_title\">Solution<\/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>Tabela Zaposlenih. Pribavite maksimalnu platu me\u0111u svim prose\u010dnim platama po departmanu<br \/>\n<b class=\"spoiler_title\">Solution<\/b><\/p>\n<pre><code class=\"sql\">  SELECT MAX (AVG (salary))\n    FROM employees\nGROUP BY department_id;\n<\/code><\/pre>\n<p>Tabela Zaposlenih. Pribavite broj zaposlenih sa istim brojem slova u imenu. Prikazati samo one \u010dije ime ima vi\u0161e od 5 slova i broj zaposlenih sa tim imenom ve\u0107i od 20. Sortirati po du\u017eini imena<br \/>\n<b class=\"spoiler_title\">Solution<\/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>Prikazivanje podataka iz vi\u0161e tabela koriste\u0107i spoj<\/b><\/p>\n<p>Tabela Zaposlenih, Departamenti, Lokacije, Dr\u017eave, Regioni. Pribavite listu regiona i broj zaposlenih u svakom regionu<br \/>\n<b class=\"spoiler_title\">Solution<\/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>Tabela Zaposlenih, Departamenti, Lokacije, Dr\u017eave, Regioni. Pribavite detaljne informacije o svakom zaposlenom:<br \/>\nFirst_name, Last_name, Departament, Job, Ulica, Dr\u017eava, Region<br \/>\n<b class=\"spoiler_title\">Solution<\/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>Tabela Zaposlenih. Prikazati sve menad\u017eere koji imaju vi\u0161e od 6 zaposlenih podredjenih<br \/>\n<b class=\"spoiler_title\">Solution<\/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>Tabela Zaposlenih. Prikazati sve zaposlene koji nikome ne podre\u0111uju<br \/>\n<b class=\"spoiler_title\">Solution<\/b><\/p>\n<pre><code class=\"sql\">IZBERITE emp.first_name\n  IZ zaposleni emp\n       LEVO PRIDRU\u017dI zaposlenega man NA (emp.manager_id = man.employee_id)\n KJER man.FIRST_NAME JE NULL;\n\nIZBERITE first_name\n  IZ zaposleni\n KJER manager_id JE NULL;\n<\/code><\/pre>\n<p>Tabela Zaposleni, Job_history. V tabeli Zaposleni so shranjeni vsi zaposleni. V tabeli Job_history so zaposleni, ki so zapustili podjetje. Pridobite poro\u010dilo o vseh zaposlenih in o njihovem statusu v podjetju (Aktivni ali zapustili podjetje z datumom odhoda).<br \/>\nPrimer:<br \/>\nfirst_name | status<br \/>\nJennifer | Zapustila podjetje 31. decembra 2006<br \/>\nClara | Trenutno zaposleni<br \/>\n<b class=\"spoiler_title\">Solution<\/b><\/p>\n<pre><code class=\"sql\">IZBERITE first_name,\n       NVL2 (\n           end_date,\n           TO_CHAR (end_date, 'fm\"\"Zapustil podjetje na\"\" DD \"\"v\"\" Mesec, YYYY'),\n           'Trenutno zaposleni')\n           status\n  IZ zaposleni e LEVO PRIDRU\u017dI zgodovini dela j NA (e.employee_id = j.employee_id);\n<\/code><\/pre>\n<p>Tabela Zaposleni, Oddelki, Lokacije, Dr\u017eave, Regije. Pridobite seznam zaposlenih, ki \u017eivijo v Evropi (region_name).<br \/>\n<b class=\"spoiler_title\">Solution<\/b><\/p>\n<pre><code class=\"sql\"> IZBERITE first_name\n  IZ zaposleni\n       PRIDRU\u017dITE oddelki UPORABNI (department_id)\n       PRIDRU\u017dITE lokacije UPORABNI (location_id)\n       PRIDRU\u017dITE dr\u017eave UPORABNI (country_id)\n       PRIDRU\u017dITE regije UPORABNI (region_id)\n KJER region_name = 'Evropa';\n \n IZBERITE first_name\n  IZ zaposleni e\n       PRIDRU\u017dITE oddelki d NA (e.department_id = d.department_id)\n       PRIDRU\u017dITE lokacije l NA (d.location_id = l.location_id)\n       PRIDRU\u017dITE dr\u017eave c NA (l.country_id = c.country_id)\n       PRIDRU\u017dITE regije r NA (c.region_id = r.region_id)\n KJER region_name = 'Evropa';\n<\/code><\/pre>\n<p>Tabela Zaposleni, Oddelki. Prikazati vse oddelke, v katerih dela ve\u010d kot 30 zaposlenih.<br \/>\n<b class=\"spoiler_title\">Solution<\/b><\/p>\n<pre><code class=\"sql\">IZBERITE department_name, COUNT (*)\n    IZ zaposleni e PRIDRU\u017dITE oddelki d NA (e.department_id = d.department_id)\nGROUP BY department_name\n  IMATE COUNT (*) &gt; 30;\n<\/code><\/pre>\n<p>Tabela Zaposleni, Oddelki. Prikazati vse zaposlene, ki niso povezani z nobenim oddelkom.<br \/>\n<b class=\"spoiler_title\">Solution<\/b><\/p>\n<pre><code class=\"sql\">IZBERITE first_name\n  IZ zaposleni e\n       LEVO PRIDRU\u017dI oddelki d NA (e.department_id = d.department_id)\n KJER d.department_name JE NULL;\n\nIZBERITE first_name\n  IZ zaposleni\n KJER department_id JE NULL;\n<\/code><\/pre>\n<p>Tabela Zaposleni, Oddelki. Prikazati vse oddelke, v katerih ni nobenega zaposlenega.<br \/>\n<b class=\"spoiler_title\">Solution<\/b><\/p>\n<pre><code class=\"sql\">IZBERITE department_name\n  IZ zaposleni e\n       DESNO PRIDRU\u017dI oddelki d NA (e.department_id = d.department_id)\n KJER first_name JE NULL;\n<\/code><\/pre>\n<p>Tabela Zaposleni. Prikazati vse zaposlene, ki nimajo nikogar v podrejenem polo\u017eaju.<br \/>\n<b class=\"spoiler_title\">Solution<\/b><\/p>\n<pre><code class=\"sql\">IZBERITE man.first_name\n  IZ zaposleni emp\n       DESNO PRIDRU\u017dI zaposleni man NA (emp.manager_id = man.employee_id)\n KJER emp.FIRST_NAME JE NULL;\n<\/code><\/pre>\n<p>Tabela Zaposleni, Delovna mesta, Oddelki. Prikazati zaposlene v formatu: First_name, Job_title, Department_name.<br \/>\nPrimer:<br \/>\nFirst_name | Job_title | Department_name<br \/>\nDonald | Po\u0161iljanje | Klju\u010davni\u010dar<br \/>\n<b class=\"spoiler_title\">Solution<\/b><\/p>\n<pre><code class=\"sql\">IZBERITE first_name, job_title, department_name\n  IZ zaposleni e\n       PRIDRU\u017dITE delovna mesta j NA (e.job_id = j.job_id)\n       PRIDRU\u017dITE oddelki d NA (d.department_id = e.department_id);\n<\/code><\/pre>\n<p>Tabela Zaposleni. Pridobite seznam zaposlenih, katerih managerji so se zaposlili leta 2005, vendar so ti zaposleni za\u010deli delati pred letom 2005.<br \/>\n<b class=\"spoiler_title\">Solution<\/b><\/p>\n<pre><code class=\"sql\">IZBERITE emp.*\n  IZ zaposleni emp PRIDRU\u017dITE zaposlene man NA (emp.manager_id = man.employee_id)\n KJER     TO_CHAR (man.hire_date, 'YYYY') = '2005'\n       IN emp.hire_date &lt; TO_DATE (&#039;01012005&#039;, &#039;DDMMYYYY&#039;);\n<\/code><\/pre>\n<p>Tabela Zaposleni. Dobiti popis zaposlenika \u010diji su menad\u017eeri zaposleni u januaru bilo koje godine i \u010dija du\u017eina job_title prelazi 15 karaktera<br \/>\n<b class=\"spoiler_title\">Solution<\/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>Kori\u0161\u0107enje podupita za re\u0161avanje upita<\/b><\/p>\n<p>Tabela Zaposleni. Dobiti popis zaposlenika sa najdu\u017eim imenom.<br \/>\n<b class=\"spoiler_title\">Solution<\/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>Tabela Zaposleni. Dobiti popis zaposlenika \u010dija plata je ve\u0107a od prose\u010dne plate svih zaposlenih.<br \/>\n<b class=\"spoiler_title\">Solution<\/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>Tabela Zaposleni, Odeljenja, Lokacije. Dobiti grad u kojem zaposleni ukupno zara\u0111uju najmanje.<br \/>\n<b class=\"spoiler_title\">Solution<\/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>Tabela Zaposleni. Dobiti popis zaposlenika \u010diji menad\u017eer zara\u0111uje vi\u0161e od 15000.<br \/>\n<b class=\"spoiler_title\">Solution<\/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>Tabela Zaposleni, Oddelki. Prikazati vse oddelke, v katerih ni nobenega zaposlenega.<br \/>\n<b class=\"spoiler_title\">Solution<\/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>Tabela Zaposleni. Prikazati sve zaposlene koji nisu menad\u017eeri<br \/>\n<b class=\"spoiler_title\">Solution<\/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>Tabela Zaposlenih. Prikazati sve menad\u017eere koji imaju vi\u0161e od 6 zaposlenih podredjenih<br \/>\n<b class=\"spoiler_title\">Solution<\/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>Tabela Zaposleni, Odeljenja. Prikazati zaposlenike koji rade u IT odeljenju<br \/>\n<b class=\"spoiler_title\">Solution<\/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>Tabela Zaposleni, Delovna mesta, Oddelki. Prikazati zaposlene v formatu: First_name, Job_title, Department_name.<br \/>\nPrimer:<br \/>\nFirst_name | Job_title | Department_name<br \/>\nDonald | Po\u0161iljanje | Klju\u010davni\u010dar<br \/>\n<b class=\"spoiler_title\">Solution<\/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>Tabela Zaposleni. Pridobite seznam zaposlenih, katerih managerji so se zaposlili leta 2005, vendar so ti zaposleni za\u010deli delati pred letom 2005.<br \/>\n<b class=\"spoiler_title\">Solution<\/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>Tabela Zaposleni. Dobiti popis zaposlenika \u010diji su menad\u017eeri zaposleni u januaru bilo koje godine i \u010dija du\u017eina job_title prelazi 15 karaktera<br \/>\n<b class=\"spoiler_title\">Solution<\/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 zasad sve.<\/b><\/p>\n<p>Nadam se da su zadaci bili zanimljivi i uzbudljivi. <br \/>\nNastavi\u0107u da dodajem ovaj spisak zadataka koliko budem mogao.<br \/>\nTudi bom vesel vseh pripomb in predlogov.<\/p>\n<p>P.S.: \u010ce komu pade na pamet zanimiva naloga za SELECT, mi pi\u0161ite v komentarjih, dodal bom na seznam.<\/p>\n<p>Hvala.<br \/>\n<br \/>Izvor: <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.4 - 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\/sl\/blog\/news\/sql-zanimatelnye-zadachki\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.4\" \/>\n\t\t<meta property=\"og:locale\" content=\"sl_SI\" \/>\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\/sl\/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. Zanimive naloge | ProHoster","description":"Pozdravljen, Habr! \u017de ve\u010d kot 3 leta pou\u010dujem SQL v razli\u010dnih izobra\u017eevalnih centrih, in ena izmed mojih opazk je, da \u0161tudenti usvojijo in razumejo SQL bolje, \u010de imajo nalogo, namesto da preprosto.","canonical_url":"https:\/\/prohoster.info\/sl\/blog\/news\/sql-zanimatelnye-zadachki","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sl_SI","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\/sl\/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\/sl\/wp-json\/wp\/v2\/posts\/36671","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/comments?post=36671"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/posts\/36671\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/media\/27465"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/media?parent=36671"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/categories?post=36671"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/tags?post=36671"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}