{"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\/de\/blog\/news\/sql-zanimatelnye-zadachki","title":{"rendered":"SQL. Interessante Aufgaben","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Hallo, Habr!<\/p>\n<p>Seit \u00fcber 3 Jahren unterrichte ich SQL in verschiedenen Schulungszentren, und eine meiner Beobachtungen ist, dass die Studenten SQL besser erlernen und verstehen, wenn sie Aufgaben gestellt bekommen, anstatt nur \u00fcber die M\u00f6glichkeiten und theoretischen Grundlagen zu sprechen.<\/p>\n<p>In diesem Artikel werde ich meine Liste von Aufgaben mit Ihnen teilen, die ich meinen Sch\u00fclern als Hausaufgaben gebe und \u00fcber die wir verschiedene Brainstormings durchf\u00fchren, was zu einem tiefen und klaren Verst\u00e4ndnis von SQL f\u00fchrt.<\/p>\n<p><img decoding=\"async\" alt=\"SQL. Interessante Aufgaben\" src=\"\/wp-content\/uploads\/2019\/07\/283f472e0c382c0621ffc14e2ac06881.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSQL (\u02c8\u025bs\u02c8kju\u02c8\u025bl; engl. structured query language \u2014 \u201eSprache f\u00fcr strukturierte Abfragen\u201c) ist eine deklarative Programmiersprache, die verwendet wird, um Daten in einem relationalen Datenbankmanagementsystem zu erstellen, zu \u00e4ndern und zu verwalten. <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/SQL\">Mehr erfahren\u2026 <\/a><\/noindex><\/p>\n<p>\u00dcber SQL kann man aus verschiedenen <noindex><a rel=\"nofollow\" href=\"https:\/\/www.google.com\/search?q=SQL\">Quellen<\/a><\/noindex>.<br \/>\nDieser Artikel hat nicht das Ziel, Sie SQL von Grund auf zu lehren.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nAlso, lass uns anfangen.<\/p>\n<p>Wir werden das allgemein bekannte <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/oracle\/db-sample-schemas\/tree\/master\/human_resources\">HR-Schema<\/a><\/noindex> in Oracle mit seinen Tabellen verwenden (<noindex><a rel=\"nofollow\" href=\"https:\/\/docs.oracle.com\/en\/database\/oracle\/oracle-database\/12.2\/comsc\/HR-sample-schema-table-descriptions.html\">Weitere Informationen<\/a><\/noindex>):<\/p>\n<p><img decoding=\"async\" alt=\"SQL. Interessante Aufgaben\" src=\"\/wp-content\/uploads\/2019\/07\/b518c0bedd0d7bbeaedbcc4bd95079cd.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nIch m\u00f6chte anmerken, dass wir nur SELECT-Aufgaben betrachten werden. Es gibt keine Aufgaben zu DML und DDL.<\/p>\n<h2>Aufgaben<\/h2>\n<p>\n<b>Daten einschr\u00e4nken und sortieren<\/b><\/p>\n<p>Tabelle Employees. Holen Sie sich eine Liste mit Informationen \u00fcber alle Mitarbeiter <br \/>\n<b class=\"spoiler_title\">L\u00f6sung<\/b><\/p>\n<pre><code class=\"sql\">SELECT * FROM employees\n<\/code><\/pre>\n<p>Tabelle Employees. Holen Sie sich eine Liste aller Mitarbeiter mit dem Namen 'David'<br \/>\n<b class=\"spoiler_title\">L\u00f6sung<\/b><\/p>\n<pre><code class=\"sql\">SELECT *\n  FROM employees\n WHERE first_name = 'David';\n<\/code><\/pre>\n<p>Tabelle Employees. Holen Sie sich eine Liste aller Mitarbeiter mit job_id gleich 'IT_PROG'<br \/>\n<b class=\"spoiler_title\">L\u00f6sung<\/b><\/p>\n<pre><code class=\"sql\">SELECT *\n  FROM employees\n WHERE job_id = 'IT_PROG'\n<\/code><\/pre>\n<p>Tabelle Employees. Holen Sie sich eine Liste aller Mitarbeiter aus der 50. Abteilung (department_id) mit einem Gehalt (salary) \u00fcber 4000<br \/>\n<b class=\"spoiler_title\">L\u00f6sung<\/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>Tabelle Employees. Holen Sie sich eine Liste aller Mitarbeiter aus der 20. und 30. Abteilung (department_id)<br \/>\n<b class=\"spoiler_title\">L\u00f6sung<\/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>Tabelle Employees. Holen Sie sich eine Liste aller Mitarbeiter, deren letzter Buchstabe im Namen 'a' ist<br \/>\n<b class=\"spoiler_title\">L\u00f6sung<\/b><\/p>\n<pre><code class=\"sql\">SELECT *\n  FROM employees\n WHERE first_name LIKE '%a';\n<\/code><\/pre>\n<p>Tabelle Employees. Holen Sie sich eine Liste aller Mitarbeiter aus der 50. und 80. Abteilung (department_id), die einen Bonus haben (Wert in der Spalte commission_pct ist nicht leer)<br \/>\n<b class=\"spoiler_title\">L\u00f6sung<\/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>Tabelle Employees. Holen Sie sich eine Liste aller Mitarbeiter, die in ihrem Namen mindestens 2 Buchstaben 'n' enthalten<br \/>\n<b class=\"spoiler_title\">L\u00f6sung<\/b><\/p>\n<pre><code class=\"sql\">SELECT *\n  FROM employees\n WHERE first_name LIKE '%n%n%';\n<\/code><\/pre>\n<p>Tabelle Employees. Holen Sie sich eine Liste aller Mitarbeiter, deren Name mehr als 4 Buchstaben hat<br \/>\n<b class=\"spoiler_title\">L\u00f6sung<\/b><\/p>\n<pre><code class=\"sql\">SELECT *\n  FROM employees\n WHERE first_name LIKE '%_____%';\n<\/code><\/pre>\n<p>Tabelle Employees. Holen Sie sich eine Liste aller Mitarbeiter, deren Gehalt zwischen 8000 und 9000 (einschlie\u00dflich) liegt.<br \/>\n<b class=\"spoiler_title\">L\u00f6sung<\/b><\/p>\n<pre><code class=\"sql\">SELECT *\n  FROM employees\n WHERE salary BETWEEN 8000 AND 9000;\n<\/code><\/pre>\n<p>Tabelle Employees. Holen Sie sich eine Liste aller Mitarbeiter, deren Name das Zeichen '%' enth\u00e4lt<br \/>\n<b class=\"spoiler_title\">L\u00f6sung<\/b><\/p>\n<pre><code class=\"sql\">SELECT *\n  FROM employees\n WHERE first_name LIKE '%%%' ESCAPE '';\n<\/code><\/pre>\n<p>Tabelle Employees. Holen Sie sich eine Liste aller ID von Managern.<br \/>\n<b class=\"spoiler_title\">L\u00f6sung<\/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>Tabelle Employees. Holen Sie sich eine Liste der Mitarbeiter mit ihren Positionen im Format: Donald(sh_clerk).<br \/>\n<b class=\"spoiler_title\">L\u00f6sung<\/b><\/p>\n<pre><code class=\"sql\">SELECT first_name || '(' || LOWER (job_id) || ')' employee FROM employees;\n<\/code><\/pre>\n<p>\n<b>Verwendung von Einzeilenfunktionen zur Anpassung der Ausgabe.<\/b><\/p>\n<p>Tabelle Employees. Holen Sie sich eine Liste aller Mitarbeiter, deren Vorname l\u00e4nger als 10 Buchstaben ist.<br \/>\n<b class=\"spoiler_title\">L\u00f6sung<\/b><\/p>\n<pre><code class=\"sql\">SELECT *\n  FROM employees\n WHERE LENGTH (first_name) &gt; 10;\n<\/code><\/pre>\n<p>Tabelle Employees. Holen Sie sich eine Liste aller Mitarbeiter, deren Name den Buchstaben 'b' enth\u00e4lt (ohne Ber\u00fccksichtigung der Gro\u00df-\/Kleinschreibung)<br \/>\n<b class=\"spoiler_title\">L\u00f6sung<\/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>Tabelle Employees. Holen Sie sich eine Liste aller Mitarbeiter, deren Name mindestens 2 Buchstaben 'a' enth\u00e4lt<br \/>\n<b class=\"spoiler_title\">L\u00f6sung<\/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>Tabelle Employees. Holen Sie sich eine Liste aller Mitarbeiter, deren Gehalt durch 1000 teilbar ist.<br \/>\n<b class=\"spoiler_title\">L\u00f6sung<\/b><\/p>\n<pre><code class=\"sql\">SELECT *\n  FROM employees\n WHERE MOD (salary, 1000) = 0;\n<\/code><\/pre>\n<p>Tabelle Employees. Holen Sie sich die ersten 3 Ziffern der Telefonnummer des Mitarbeiters, wenn seine Nummer im Format XXX.XXX.XXXX vorliegt.<br \/>\n<b class=\"spoiler_title\">L\u00f6sung<\/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>Tabelle Departments. Holen Sie sich das erste Wort aus dem Namen der Abteilung f\u00fcr diejenigen, deren Name mehr als ein Wort enth\u00e4lt.<br \/>\n<b class=\"spoiler_title\">L\u00f6sung<\/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>Tabelle Employees. Holen Sie sich die Vornamen der Mitarbeiter ohne den ersten und letzten Buchstaben.<br \/>\n<b class=\"spoiler_title\">L\u00f6sung<\/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>Tabelle Employees. Holen Sie sich eine Liste aller Mitarbeiter, deren letzter Buchstabe im Namen 'm' ist und deren Name l\u00e4nger als 5 Buchstaben ist<br \/>\n<b class=\"spoiler_title\">L\u00f6sung<\/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>Tabelle Dual. Holen Sie sich das Datum des n\u00e4chsten Freitags.<br \/>\n<b class=\"spoiler_title\">L\u00f6sung<\/b><\/p>\n<pre><code class=\"sql\">SELECT NEXT_DAY (SYSDATE, 'FRIDAY') next_friday FROM DUAL;\n<\/code><\/pre>\n<p>Tabelle Employees. Holen Sie sich eine Liste aller Mitarbeiter, die l\u00e4nger als 17 Jahre im Unternehmen arbeiten.<br \/>\n<b class=\"spoiler_title\">L\u00f6sung<\/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>Tabelle Employees. Holen Sie sich eine Liste aller Mitarbeiter, deren letzte Ziffer der Telefonnummer ungerade und aus 3 Ziffern besteht, die durch einen Punkt getrennt sind.<br \/>\n<b class=\"spoiler_title\">L\u00f6sung<\/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>Tabelle Employees. Holen Sie sich eine Liste aller Mitarbeiter, deren job_id-Wert nach dem Zeichen '_' mindestens 3 Symbole hat, wobei dieser Wert nach dem '_' nicht 'CLERK' sein darf<br \/>\n<b class=\"spoiler_title\">L\u00f6sung<\/b><\/p>\n<pre><code class=\"sql\">SELECT *\n  FROM employees\n WHERE     LENGTH (SUBSTR (job_id, INSTR (job_id, '_') + 1)) &gt; 3\n       AND SUBSTR (job_id, INSTR (job_id, '_') + 1) != 'CLERK';\n<\/code><\/pre>\n<p>Tabelle Employees. Holen Sie sich eine Liste aller Mitarbeiter, indem Sie im Wert PHONE_NUMBER alle '.' durch '-' ersetzen<br \/>\n<b class=\"spoiler_title\">L\u00f6sung<\/b><\/p>\n<pre><code class=\"sql\">SELECT phone_number, REPLACE (phone_number, '.', '-') new_phone_number\n  FROM employees;\n<\/code><\/pre>\n<p>\n<b>Benutzung von Konvertierungsfunktionen und bedingten Ausdr\u00fccken<\/b><\/p>\n<p>Tabelle Employees. Holen Sie sich eine Liste aller Mitarbeiter, die am ersten Tag eines Monats (irgendeiner) eingestellt wurden.<br \/>\n<b class=\"spoiler_title\">L\u00f6sung<\/b><\/p>\n<pre><code class=\"sql\">SELECT *\n  FROM employees\n WHERE TO_CHAR (hire_date, 'DD') = '01';\n<\/code><\/pre>\n<p>Tabelle Employees. Holen Sie sich eine Liste aller Mitarbeiter, die im Jahr 2008 eingestellt wurden.<br \/>\n<b class=\"spoiler_title\">L\u00f6sung<\/b><\/p>\n<pre><code class=\"sql\">SELECT *\n  FROM employees\n WHERE TO_CHAR (hire_date, 'YYYY') = '2008';\n<\/code><\/pre>\n<p>Tabelle DUAL. Zeige das Datum von morgen im Format: Morgen ist der zweite Tag im Januar<br \/>\n<b class=\"spoiler_title\">L\u00f6sung<\/b><\/p>\n<pre><code class=\"sql\">SELECT TO_CHAR (SYSDATE, 'fm\"\"Morgen ist \"\"Ddspth \"\"Tag von\"\" Monat')     info\n  FROM DUAL;\n<\/code><\/pre>\n<p>Tabelle Employees. Holen Sie sich eine Liste aller Mitarbeiter und deren Einstellungsdatum im Format: 21. Juni 2007<br \/>\n<b class=\"spoiler_title\">L\u00f6sung<\/b><\/p>\n<pre><code class=\"sql\">SELECT first_name, TO_CHAR (hire_date, 'fmddth \"\"von\"\" Monat, YYYY') hire_date\n  FROM employees;\n<\/code><\/pre>\n<p>Tabelle Employees. Holen Sie sich eine Liste der Mitarbeiter mit erh\u00f6hten Geh\u00e4ltern um 20 %. Gehalt im Dollarzeichen anzeigen<br \/>\n<b class=\"spoiler_title\">L\u00f6sung<\/b><\/p>\n<pre><code class=\"sql\">SELECT first_name, TO_CHAR (salary + salary * 0.20, 'fm$999,999.00') new_salary\n  FROM employees;\n<\/code><\/pre>\n<p>Tabelle Employees. Holen Sie sich eine Liste aller Mitarbeiter, die im Februar 2007 eingestellt wurden.<br \/>\n<b class=\"spoiler_title\">L\u00f6sung<\/b><\/p>\n<pre><code class=\"sql\">SELECT *\n  FROM employees\n WHERE hire_date BETWEEN TO_DATE ('01.02.2007', 'DD.MM.YYYY')\n                     AND LAST_DAY (TO_DATE ('01.02.2007', 'DD.MM.YYYY'));\n\nSELECT *\n  FROM employees\n WHERE to_char(hire_date,'MM.YYYY') = '02.2007'; \n<\/code><\/pre>\n<p>Tabelle DUAL. Geben Sie das aktuelle Datum aus, + Sekunde, + Minute, + Stunde, + Tag, + Monat, + Jahr<br \/>\n<b class=\"spoiler_title\">L\u00f6sung<\/b><\/p>\n<pre><code class=\"sql\">SELECT SYSDATE                          now,\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  FROM DUAL;\n<\/code><\/pre>\n<p>Tabelle Employees. Holen Sie sich eine Liste aller Mitarbeiter mit dem Gesamtgehalt (salary + commission_pct(%)) im Format: $24.000,00<br \/>\n<b class=\"spoiler_title\">L\u00f6sung<\/b><\/p>\n<pre><code class=\"sql\">SELECT first_name, salary, TO_CHAR (salary + salary * NVL (commission_pct, 0), 'fm$99,999.00') full_salary\n  FROM employees;\n<\/code><\/pre>\n<p>Tabelle Employees. Holen Sie sich eine Liste aller Mitarbeiter und Informationen \u00fcber die Verf\u00fcgbarkeit von Bonuszahlungen (Ja\/Nein)<br \/>\n<b class=\"spoiler_title\">L\u00f6sung<\/b><\/p>\n<pre><code class=\"sql\">SELECT first_name, commission_pct, NVL2 (commission_pct, 'Ja', 'Nein') has_bonus\n  FROM employees;\n<\/code><\/pre>\n<p>Tabelle Employees. Bestimmen Sie die Gehaltsstufe jedes Mitarbeiters: Unter 5000 wird als niedrig eingestuft, 5000 oder mehr und weniger als 10000 wird als normal eingestuft, 10000 oder mehr wird als hoch eingestuft.<br \/>\n<b class=\"spoiler_title\">L\u00f6sung<\/b><\/p>\n<pre><code class=\"sql\">W\u00c4HLEN Sie Vorname,\n       Gehalt,\n       FALLS\n           WENN Gehalt = 5000 UND Gehalt &lt; 10000 DANN &#039;Normal&#039;\n           SONST &#039;Hoch&#039;\n       ENDE Gehaltsstufe\n  VON Mitarbeitern;\n<\/code><\/pre>\n<p>Tabelle L\u00e4nder. F\u00fcr jedes Land den Region anzeigen, in dem es sich befindet: 1-Europa, 2-Amerika, 3-Asien, 4-Afrika (ohne Join)<br \/>\n<b class=\"spoiler_title\">L\u00f6sung<\/b><\/p>\n<pre><code class=\"sql\">W\u00c4HLEN Sie L\u00e4ndervorname land,\n       DECODE (region_id,\n               1, 'Europa',\n               2, 'Amerika',\n               3, 'Asien',\n               4, 'Afrika',\n               'Unbekannt')\n           region\n  VON l\u00e4ndern;\n\nW\u00c4HLEN Sie L\u00e4ndervorname\n           land,\n       FALLS region_id\n           WENN 1 DANN 'Europa'\n           WENN 2 DANN 'Amerika'\n           WENN 3 DANN 'Asien'\n           WENN 4 DANN 'Afrika'\n           SONST 'Unbekannt'\n       ENDE\n           region\n  VON l\u00e4ndern;\n<\/code><\/pre>\n<p>\n<b>Berichterstattung \u00fcber aggregierte Daten mit den Gruppenfunktionen<\/b><\/p>\n<p>Tabelle Mitarbeiter. Bericht nach department_id mit dem niedrigsten und h\u00f6chsten Gehalt, mit fr\u00fchestem und sp\u00e4testem Einstiegsdatum und Anzahl der Mitarbeiter. Sortieren nach der Anzahl der Mitarbeiter (absteigend)<br \/>\n<b class=\"spoiler_title\">L\u00f6sung<\/b><\/p>\n<pre><code class=\"sql\">  W\u00c4HLEN Sie department_id,\n         MIN (gehalt) min_gehalt,\n         MAX (gehalt) max_gehalt,\n         MIN (einstellungsdatum) min_einstellungsdatum,\n         MAX (einstellungsdatum) max_einstellungsdatum,\n         ANZAHL (*) anzahl\n    VON mitarbeitern\nGRUPPIEREN NACH department_id\nORDER BY ANZAHL(*) DESC;\n<\/code><\/pre>\n<p>Tabelle Mitarbeiter. Wie viele Mitarbeiter haben Namen, die mit demselben Buchstaben beginnen? Nach Anzahl sortieren. Nur die anzeigen, bei denen die Anzahl gr\u00f6\u00dfer als 1 ist.<br \/>\n<b class=\"spoiler_title\">L\u00f6sung<\/b><\/p>\n<pre><code class=\"sql\">W\u00c4HLEN Sie SUBSTR (vorname, 1, 1) erster_buchstabe, ANZAHL (*)\n    VON mitarbeitern\nGRUPPIEREN NACH SUBSTR (vorname, 1, 1)\n  HABEN ANZAHL (*) &gt; 1\nORDER BY 2 DESC;\n<\/code><\/pre>\n<p>Tabelle Mitarbeiter. Wie viele Mitarbeiter arbeiten in demselben Abteilung und verdienen das gleiche Gehalt?<br \/>\n<b class=\"spoiler_title\">L\u00f6sung<\/b><\/p>\n<pre><code class=\"sql\">W\u00c4HLEN Sie department_id, gehalt, ANZAHL (*)\n    VON mitarbeitern\nGRUPPIEREN NACH department_id, gehalt\n  HABEN ANZAHL (*) &gt; 1;\n<\/code><\/pre>\n<p>Tabelle Mitarbeiter. Bericht, wie viele Mitarbeiter an jedem Wochentag eingestellt wurden. Nach Anzahl sortieren.<br \/>\n<b class=\"spoiler_title\">L\u00f6sung<\/b><\/p>\n<pre><code class=\"sql\">W\u00c4HLEN Sie TO_CHAR (einstellungsdatum, 'Tag') tag, ANZAHL (*)\n    VON mitarbeitern\nGRUPPIEREN NACH TO_CHAR (einstellungsdatum, 'Tag')\nORDER BY 2 DESC;\n<\/code><\/pre>\n<p>Tabelle Mitarbeiter. Bericht, wie viele Mitarbeiter in den Jahren eingestellt wurden. Nach Anzahl sortieren.<br \/>\n<b class=\"spoiler_title\">L\u00f6sung<\/b><\/p>\n<pre><code class=\"sql\">W\u00c4HLEN Sie TO_CHAR (einstellungsdatum, 'YYYY') jahr, ANZAHL (*)\n    VON mitarbeitern\nGRUPPIEREN NACH TO_CHAR (einstellungsdatum, 'YYYY');\n<\/code><\/pre>\n<p>Tabelle Mitarbeiter. Anzahl der Abteilungen, in denen Mitarbeiter sind.<br \/>\n<b class=\"spoiler_title\">L\u00f6sung<\/b><\/p>\n<pre><code class=\"sql\">W\u00c4HLEN Sie ANZAHL (ANZAHL (*))     abteilungsanzahl\n    VON mitarbeitern\n   WOHER department_id IST NICHT NULL\nGRUPPIEREN NACH department_id;\n<\/code><\/pre>\n<p>Tabelle Mitarbeiter. Liste der department_id, in denen mehr als 30 Mitarbeiter arbeiten.<br \/>\n<b class=\"spoiler_title\">L\u00f6sung<\/b><\/p>\n<pre><code class=\"sql\">  W\u00c4HLEN Sie department_id\n    VON mitarbeitern\nGRUPPIEREN NACH department_id\n  HABEN ANZAHL (*) &gt; 30;\n<\/code><\/pre>\n<p>Tabelle Mitarbeiter. Liste der department_id und gerundeten durchschnittlichen Geh\u00e4lter der Mitarbeiter in jeder Abteilung. <br \/>\n<b class=\"spoiler_title\">L\u00f6sung<\/b><\/p>\n<pre><code class=\"sql\">  W\u00c4HLEN Sie department_id, RUNDEN (DURCHSCHNITT (gehalt)) durchschnittsgehalt\n    VON mitarbeitern\nGRUPPIEREN NACH department_id;\n<\/code><\/pre>\n<p>Tabelle L\u00e4nder. Liste der region_id Summe aller Buchstaben aller L\u00e4ndervornamen, in denen es mehr als 60 gibt.<br \/>\n<b class=\"spoiler_title\">L\u00f6sung<\/b><\/p>\n<pre><code class=\"sql\">  W\u00c4HLEN Sie region_id\n    VON L\u00e4ndern\nGRUPPIEREN Sie NACH region_id\n  HABEN SUMME (L\u00c4NGE (land_name)) &gt; 60;\n<\/code><\/pre>\n<p>Tabelle Employees. Erlangen Sie eine Liste von department_id, in der Mitarbeiter mit mehreren (&gt;1) job_id arbeiten.<br \/>\n<b class=\"spoiler_title\">L\u00f6sung<\/b><\/p>\n<pre><code class=\"sql\">  W\u00c4HLEN Sie department_id\n    VON mitarbeitern\nGRUPPIEREN Sie NACH department_id\n  HABEN COUNT (DISTINCT job_id) &gt; 1;\n<\/code><\/pre>\n<p>Tabelle Employees. Erlangen Sie eine Liste von manager_id, bei denen die Anzahl der Untergebenen mehr als 5 betr\u00e4gt und die Summe aller Geh\u00e4lter seiner Untergebenen mehr als 50000 betr\u00e4gt.<br \/>\n<b class=\"spoiler_title\">L\u00f6sung<\/b><\/p>\n<pre><code class=\"sql\">  W\u00c4HLEN Sie manager_id\n    VON mitarbeitern\nGRUPPIEREN Sie NACH manager_id\n  HABEN COUNT (*) &gt; 5 UND SUMME (salary) &gt; 50000;\n<\/code><\/pre>\n<p>Tabelle Employees. Erlangen Sie eine Liste von manager_id, bei denen das durchschnittliche Gehalt aller Untergebenen zwischen 6000 und 9000 liegt, die keine Boni erhalten (commission_pct leer).<br \/>\n<b class=\"spoiler_title\">L\u00f6sung<\/b><\/p>\n<pre><code class=\"sql\">  W\u00c4HLEN Sie manager_id, AVG (salary) avg_salary\n    VON mitarbeitern\n   WOHER commission_pct IST NULL\nGRUPPIEREN Sie NACH manager_id\n  HABEN AVG (salary) ZWISCHEN 6000 UND 9000;\n<\/code><\/pre>\n<p>Tabelle Employees. Holen Sie sich das maximale Gehalt aller Mitarbeiter, deren job_id mit dem Wort 'CLERK' endet<br \/>\n<b class=\"spoiler_title\">L\u00f6sung<\/b><\/p>\n<pre><code class=\"sql\">W\u00c4HLEN Sie MAX (salary) max_salary\n  VON mitarbeitern\n WO die job_id LIKE '%CLERK';\n\nW\u00c4HLEN Sie MAX (salary) max_salary\n  VON mitarbeitern\n WO SUBSTR (job_id, -5) = 'CLERK';\n<\/code><\/pre>\n<p>Tabelle Employees. Erlangen Sie das maximale Gehalt unter allen durchschnittlichen Geh\u00e4ltern nach Abteilung.<br \/>\n<b class=\"spoiler_title\">L\u00f6sung<\/b><\/p>\n<pre><code class=\"sql\">  W\u00c4HLEN Sie MAX (DURCHSCHNITT (salary))\n    VON mitarbeitern\nGRUPPIEREN Sie NACH department_id;\n<\/code><\/pre>\n<p>Tabelle Employees. Z\u00e4hlen Sie die Anzahl der Mitarbeiter mit der gleichen Anzahl an Buchstaben im Namen. Zeigen Sie nur die an, deren Name l\u00e4nger als 5 ist und dessen Mitarbeiteranzahl mit diesem Namen gr\u00f6\u00dfer als 20 ist. Sortieren Sie nach L\u00e4nge des Namens.<br \/>\n<b class=\"spoiler_title\">L\u00f6sung<\/b><\/p>\n<pre><code class=\"sql\">  W\u00c4HLEN Sie L\u00c4NGE (first_name), COUNT (*)\n    VON mitarbeitern\nGRUPPIEREN Sie NACH L\u00c4NGE (first_name)\n  HABEN L\u00c4NGE (first_name) &gt; 5 UND COUNT (*) &gt; 20\nBESTELLEN NACH L\u00c4NGE (first_name);\n\n  W\u00c4HLEN Sie L\u00c4NGE (first_name), COUNT (*)\n    VON mitarbeitern\n   WO L\u00c4NGE (first_name) &gt; 5\nGRUPPIEREN Sie NACH L\u00c4NGE (first_name)\n  HABEN COUNT (*) &gt; 20\nBESTELLEN NACH L\u00c4NGE (first_name);\n<\/code><\/pre>\n<p>\n<b>Daten aus mehreren Tabellen mit Joins anzeigen<\/b><\/p>\n<p>Tabelle Employees, Departements, Standorte, L\u00e4nder, Regionen. Erlangen Sie eine Liste der Regionen und die Anzahl der Mitarbeiter in jeder Region.<br \/>\n<b class=\"spoiler_title\">L\u00f6sung<\/b><\/p>\n<pre><code class=\"sql\">  W\u00c4HLEN Sie region_name, COUNT (*)\n    VON mitarbeitern e\n         JOIN abteilungen d ON (e.department_id = d.department_id)\n         JOIN standorte l ON (d.location_id = l.location_id)\n         JOIN l\u00e4nder c ON (l.country_id = c.country_id)\n         JOIN regionen r ON (c.region_id = r.region_id)\nGRUPPIEREN Sie NACH region_name;\n<\/code><\/pre>\n<p>Tabelle Employees, Departements, Standorte, L\u00e4nder, Regionen. Erlangen Sie detaillierte Informationen \u00fcber jeden Mitarbeiter:<br \/>\nVorname, Nachname, Abteilung, Job, Stra\u00dfe, Land, Region<br \/>\n<b class=\"spoiler_title\">L\u00f6sung<\/b><\/p>\n<pre><code class=\"sql\">W\u00c4HLEN Sie Vorname,\n       Nachname,\n       Abteilungsname,\n       Job_id,\n       stra\u00dfenadresse,\n       Land_name,\n       Region_name\n  VON mitarbeitern e\n       JOIN abteilungen d ON (e.department_id = d.department_id)\n       JOIN standorte l ON (d.location_id = l.location_id)\n       JOIN l\u00e4nder c ON (l.country_id = c.country_id)\n       JOIN regionen r ON (c.region_id = r.region_id);\n<\/code><\/pre>\n<p>Tabelle Employees. Zeigen Sie alle Manager an, die mehr als 6 Mitarbeiter zu betreuen haben.<br \/>\n<b class=\"spoiler_title\">L\u00f6sung<\/b><\/p>\n<pre><code class=\"sql\">  W\u00c4HLEN man.first_name, COUNT (*)\n    VON mitarbeitern emp JOIN mitarbeitern man ON (emp.manager_id = man.employee_id)\nGROUP BY man.first_name\n  HAVING COUNT (*) &gt; 6;\n<\/code><\/pre>\n<p>Tabelle Mitarbeiter. Zeige alle Mitarbeiter, die niemandem unterstellt sind<br \/>\n<b class=\"spoiler_title\">L\u00f6sung<\/b><\/p>\n<pre><code class=\"sql\">W\u00c4HLEN emp.first_name\n  VON mitarbeitern emp\n       LINK JOIN mitarbeitern man ON (emp.manager_id = man.employee_id)\n WHERE man.FIRST_NAME IST NULL;\n\nW\u00c4HLEN first_name\n  VON mitarbeitern\n WHERE manager_id IST NULL;\n<\/code><\/pre>\n<p>Tabelle Mitarbeiter, Job_history. In der Tabelle Mitarbeiter werden alle Mitarbeiter gespeichert. In der Tabelle Job_history werden Mitarbeiter gespeichert, die das Unternehmen verlassen haben. Einen Bericht \u00fcber alle Mitarbeiter und deren Status im Unternehmen erhalten (Aktiv oder das Unternehmen mit Abgangsdatum verlassen)<br \/>\nBeispiel:<br \/>\nfirst_name | status<br \/>\nJennifer | Verlie\u00df das Unternehmen am 31. Dezember 2006<br \/>\nClara | Derzeit besch\u00e4ftigt<br \/>\n<b class=\"spoiler_title\">L\u00f6sung<\/b><\/p>\n<pre><code class=\"sql\">W\u00c4HLEN first_name,\n       NVL2 (\n           end_date,\n           TO_CHAR (end_date, 'fm\"\"Verlie\u00df das Unternehmen am\"\" DD \"\"von\"\" Monat, YYYY'),\n           'Derzeit besch\u00e4ftigt')\n           status\n  VON mitarbeitern e LINK JOIN job_history j ON (e.employee_id = j.employee_id);\n<\/code><\/pre>\n<p>Tabelle Mitarbeiter, Abteilungen, Standorte, L\u00e4nder, Regionen. Liste der Mitarbeiter abrufen, die in Europa (region_name) leben<br \/>\n<b class=\"spoiler_title\">L\u00f6sung<\/b><\/p>\n<pre><code class=\"sql\"> W\u00c4HLEN first_name\n  VON mitarbeitern\n       JOIN abteilungen USING (department_id)\n       JOIN standorte USING (location_id)\n       JOIN l\u00e4nder USING (country_id)\n       JOIN regionen USING (region_id)\n WHERE region_name = 'Europa';\n \n W\u00c4HLEN first_name\n  VON mitarbeitern e\n       JOIN abteilungen d ON (e.department_id = d.department_id)\n       JOIN standorte l ON (d.location_id = l.location_id)\n       JOIN l\u00e4nder c ON (l.country_id = c.country_id)\n       JOIN regionen r ON (c.region_id = r.region_id)\n WHERE region_name = 'Europa';\n<\/code><\/pre>\n<p>Tabelle Mitarbeiter, Abteilungen. Zeige alle Abteilungen, in denen mehr als 30 Mitarbeiter arbeiten<br \/>\n<b class=\"spoiler_title\">L\u00f6sung<\/b><\/p>\n<pre><code class=\"sql\">W\u00c4HLEN department_name, COUNT (*)\n    VON mitarbeitern e JOIN abteilungen d ON (e.department_id = d.department_id)\nGROUP BY department_name\n  HAVING COUNT (*) &gt; 30;\n<\/code><\/pre>\n<p>Tabelle Mitarbeiter, Abteilungen. Zeige alle Mitarbeiter, die in keiner Abteilung sind<br \/>\n<b class=\"spoiler_title\">L\u00f6sung<\/b><\/p>\n<pre><code class=\"sql\">W\u00c4HLEN first_name\n  VON mitarbeitern e\n       LINK JOIN abteilungen d ON (e.department_id = d.department_id)\n WHERE d.department_name IST NULL;\n\nW\u00c4HLEN first_name\n  VON mitarbeitern\n WHERE department_id IST NULL;\n<\/code><\/pre>\n<p>Tabelle Mitarbeiter, Abteilungen. Zeige alle Abteilungen, in denen kein Mitarbeiter ist<br \/>\n<b class=\"spoiler_title\">L\u00f6sung<\/b><\/p>\n<pre><code class=\"sql\">W\u00c4HLEN department_name\n  VON mitarbeitern e\n       RECHTS JOIN abteilungen d ON (e.department_id = d.department_id)\n WHERE first_name IST NULL;\n<\/code><\/pre>\n<p>Tabelle Mitarbeiter. Zeige alle Mitarbeiter, die niemanden unterstellt haben<br \/>\n<b class=\"spoiler_title\">L\u00f6sung<\/b><\/p>\n<pre><code class=\"sql\">W\u00c4HLEN man.first_name\n  VON mitarbeitern emp\n       RECHTS JOIN mitarbeitern man ON (emp.manager_id = man.employee_id)\n WHERE emp.FIRST_NAME IST NULL;\n<\/code><\/pre>\n<p>Tabelle Mitarbeiter, Jobs, Abteilungen. Zeige Mitarbeiter im Format: First_name, Job_title, Department_name.<br \/>\nBeispiel:<br \/>\nFirst_name | Job_title | Department_name<br \/>\nDonald | Versand | Versandleiter<br \/>\n<b class=\"spoiler_title\">L\u00f6sung<\/b><\/p>\n<pre><code class=\"sql\">W\u00c4HLEN first_name, job_title, department_name\n  VON mitarbeitern e\n       JOIN jobs j ON (e.job_id = j.job_id)\n       JOIN abteilungen d ON (d.department_id = e.department_id);\n<\/code><\/pre>\n<p>Tabelle Mitarbeiter. Liste der Mitarbeiter abrufen, deren Manager im Jahr 2005 eingestellt wurden, w\u00e4hrend diese Mitarbeiter vor 2005 eingestellt wurden<br \/>\n<b class=\"spoiler_title\">L\u00f6sung<\/b><\/p>\n<pre><code class=\"sql\">W\u00c4HLEN Sie emp.*\n  AUS Mitarbeitern emp JOIN Mitarbeitern man ON (emp.manager_id = man.employee_id)\n WHERE     TO_CHAR (man.hire_date, 'YYYY') = '2005'\n       UND emp.hire_date &lt; TO_DATE (&#039;01012005&#039;, &#039;DDMMYYYY&#039;);\n<\/code><\/pre>\n<p>Tabelle Mitarbeiter. Holen Sie sich eine Liste von Mitarbeitern, deren Manager im Januar eines beliebigen Jahres eingestellt wurden und deren job_title l\u00e4nger als 15 Zeichen ist.<br \/>\n<b class=\"spoiler_title\">L\u00f6sung<\/b><\/p>\n<pre><code class=\"sql\">W\u00c4HLEN Sie emp.*\n  AUS Mitarbeitern emp\n       JOIN Mitarbeitern 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' UND LENGTH (j.job_title) &gt; 15;\n<\/code><\/pre>\n<p>\n<b>Unterabfragen zur L\u00f6sung von Abfragen verwenden<\/b><\/p>\n<p>Tabelle Mitarbeiter. Holen Sie sich eine Liste von Mitarbeitern mit dem l\u00e4ngsten Namen.<br \/>\n<b class=\"spoiler_title\">L\u00f6sung<\/b><\/p>\n<pre><code class=\"sql\">W\u00c4HLEN Sie *\n  AUS Mitarbeitern\n WHERE LENGTH (first_name) =\n       (W\u00c4HLEN MAX (LENGTH (first_name)) AUS Mitarbeitern);\n<\/code><\/pre>\n<p>Tabelle Mitarbeiter. Holen Sie sich eine Liste von Mitarbeitern mit einem Gehalt, das \u00fcber dem Durchschnittsgehalt aller Mitarbeiter liegt.<br \/>\n<b class=\"spoiler_title\">L\u00f6sung<\/b><\/p>\n<pre><code class=\"sql\">W\u00c4HLEN Sie *\n  AUS Mitarbeitern\n WHERE salary &gt; (W\u00c4HLEN AVG (salary) AUS Mitarbeitern);\n<\/code><\/pre>\n<p>Tabelle Mitarbeiter, Abteilungen, Standorte. Holen Sie sich die Stadt, in der die Mitarbeiter insgesamt am wenigsten verdienen.<br \/>\n<b class=\"spoiler_title\">L\u00f6sung<\/b><\/p>\n<pre><code class=\"sql\">W\u00c4HLEN Sie city\n    AUS Mitarbeitern e\n         JOIN Abteilungen d ON (e.department_id = d.department_id)\n         JOIN Standorte l ON (d.location_id = l.location_id)\nGROUP BY city\n  HAVING SUM (salary) =\n         (  W\u00c4HLEN MIN (SUM (salary))\n              AUS Mitarbeitern e\n                   JOIN Abteilungen d ON (e.department_id = d.department_id)\n                   JOIN Standorte l ON (d.location_id = l.location_id)\n          GROUP BY city);\n<\/code><\/pre>\n<p>Tabelle Mitarbeiter. Holen Sie sich eine Liste von Mitarbeitern, deren Manager mehr als 15000 verdienen.<br \/>\n<b class=\"spoiler_title\">L\u00f6sung<\/b><\/p>\n<pre><code class=\"sql\">W\u00c4HLEN Sie *\n  AUS Mitarbeitern\n WHERE manager_id IN (W\u00c4HLEN employee_id\n                        AUS Mitarbeitern\n                       WHERE salary &gt; 15000)\n<\/code><\/pre>\n<p>Tabelle Mitarbeiter, Abteilungen. Zeige alle Abteilungen, in denen kein Mitarbeiter ist<br \/>\n<b class=\"spoiler_title\">L\u00f6sung<\/b><\/p>\n<pre><code class=\"sql\">W\u00c4HLEN Sie *\n  AUS Abteilungen\n WHERE department_id NOT IN (W\u00c4HLEN department_id\n                               AUS Mitarbeitern\n                              WHERE department_id IST NICHT NULL);\n<\/code><\/pre>\n<p>Tabelle Mitarbeiter. Zeigen Sie alle Mitarbeiter an, die keine Manager sind.<br \/>\n<b class=\"spoiler_title\">L\u00f6sung<\/b><\/p>\n<pre><code class=\"sql\">W\u00c4HLEN Sie *\n  AUS Mitarbeitern\n WHERE employee_id NOT IN (W\u00c4HLEN manager_id\n                             AUS Mitarbeitern\n                            WHERE manager_id IST NICHT NULL)\n<\/code><\/pre>\n<p>Tabelle Employees. Zeigen Sie alle Manager an, die mehr als 6 Mitarbeiter zu betreuen haben.<br \/>\n<b class=\"spoiler_title\">L\u00f6sung<\/b><\/p>\n<pre><code class=\"sql\">W\u00c4HLEN Sie *\n  AUS Mitarbeitern e\n WHERE (W\u00c4HLEN COUNT (*)\n          AUS Mitarbeitern\n         WHERE manager_id = e.employee_id) &gt; 6;\n<\/code><\/pre>\n<p>Tabelle Mitarbeiter, Abteilungen. Zeigen Sie Mitarbeiter an, die in der IT-Abteilung arbeiten.<br \/>\n<b class=\"spoiler_title\">L\u00f6sung<\/b><\/p>\n<pre><code class=\"sql\">W\u00c4HLEN Sie *\n  AUS Mitarbeitern\n WHERE department_id = (W\u00c4HLEN department_id\n                          AUS Abteilungen\n                         WHERE department_name = 'IT');\n<\/code><\/pre>\n<p>Tabelle Mitarbeiter, Jobs, Abteilungen. Zeige Mitarbeiter im Format: First_name, Job_title, Department_name.<br \/>\nBeispiel:<br \/>\nFirst_name | Job_title | Department_name<br \/>\nDonald | Versand | Versandleiter<br \/>\n<b class=\"spoiler_title\">L\u00f6sung<\/b><\/p>\n<pre><code class=\"sql\">W\u00c4HLEN Sie first_name,\n       (W\u00c4HLEN job_title\n          AUS jobs\n         WHERE job_id = e.job_id)\n           job_title,\n       (W\u00c4HLEN department_name\n          AUS Abteilungen\n         WHERE department_id = e.department_id)\n           department_name\n  AUS Mitarbeitern e;\n<\/code><\/pre>\n<p>Tabelle Mitarbeiter. Liste der Mitarbeiter abrufen, deren Manager im Jahr 2005 eingestellt wurden, w\u00e4hrend diese Mitarbeiter vor 2005 eingestellt wurden<br \/>\n<b class=\"spoiler_title\">L\u00f6sung<\/b><\/p>\n<pre><code class=\"sql\">W\u00c4HLEN Sie *\n  AUS Mitarbeitern\n WHERE     manager_id IN (W\u00c4HLEN employee_id\n                            AUS Mitarbeitern\n                           WHERE TO_CHAR (hire_date, 'YYYY') = '2005')\n       UND hire_date &lt; TO_DATE (&#039;01012005&#039;, &#039;DDMMYYYY&#039;);\n<\/code><\/pre>\n<p>Tabelle Mitarbeiter. Holen Sie sich eine Liste von Mitarbeitern, deren Manager im Januar eines beliebigen Jahres eingestellt wurden und deren job_title l\u00e4nger als 15 Zeichen ist.<br \/>\n<b class=\"spoiler_title\">L\u00f6sung<\/b><\/p>\n<pre><code class=\"sql\">W\u00c4HLEN Sie *\n  AUS Mitarbeitern e\n WHERE     manager_id IN (W\u00c4HLEN employee_id\n                            AUS Mitarbeitern\n                           WHERE TO_CHAR (hire_date, 'MM') = '01')\n       UND (W\u00c4HLEN LENGTH (job_title)\n              AUS jobs\n             WHERE job_id = e.job_id) &gt; 15;\n<\/code><\/pre>\n<p>\n<b>Das ist vorerst alles.<\/b><\/p>\n<p>Ich hoffe, die Aufgaben waren interessant und spannend. <br \/>\nIch werde diese Liste von Aufgaben nach M\u00f6glichkeit erg\u00e4nzen.<br \/>\nIch freue mich auch \u00fcber jegliche Anmerkungen und Vorschl\u00e4ge.<\/p>\n<p>P.S.: Wenn jemand eine interessante SELECT-Aufgabe einf\u00e4llt, schreibt in die Kommentare, ich werde sie zur Liste hinzuf\u00fcgen.<\/p>\n<p>Danke.<br \/>\n<br \/>Quelle: <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.1.1 - 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\/de\/blog\/news\/sql-zanimatelnye-zadachki\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"de_DE\" \/>\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\/de\/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. Spannende Aufgaben | ProHoster","description":"Hallo, Habr! Seit \u00fcber 3 Jahren unterrichte ich SQL in verschiedenen Trainingszentren, und eine meiner Beobachtungen ist, dass die Studenten SQL besser erlernen und verstehen, wenn sie mit Aufgaben konfrontiert werden, anstatt nur.","canonical_url":"https:\/\/prohoster.info\/de\/blog\/news\/sql-zanimatelnye-zadachki","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"de_DE","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\/de\/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\/de\/wp-json\/wp\/v2\/posts\/36671","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/comments?post=36671"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/36671\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media\/27465"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media?parent=36671"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/categories?post=36671"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/tags?post=36671"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}