{"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\/novosti-interneta\/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. Dabei ist mir aufgefallen, dass die Studierenden SQL besser beherrschen und verstehen, wenn sie mit konkreten Aufgaben konfrontiert werden, anstatt nur \u00fcber die M\u00f6glichkeiten und theoretischen Grundlagen zu lernen.<\/p>\n<p>In diesem Artikel teile ich meine Liste von Aufgaben, die ich den Studierenden als Hausaufgaben gebe. Gemeinsam arbeiten wir an verschiedenen Brainstorming-Sitzungen, die zu einem tiefen und klaren Verst\u00e4ndnis von SQL f\u00fchren.<\/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 \u2013 \u201estrukturierte Abfragesprache\u201c) ist eine deklarative Programmiersprache, die zur Erstellung, Modifizierung und Verwaltung von Daten in einer relationalen Datenbank verwendet wird, die von einem entsprechenden Datenbankmanagementsystem verwaltet wird. <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 Quellen lesen. <noindex><a rel=\"nofollow\" href=\"https:\/\/www.google.com\/search?q=SQL\">Quellen<\/a><\/noindex>.<br \/>\nDieser Artikel verfolgt nicht das Ziel, Sie von Grund auf in SQL einzuarbeiten.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nAlso, legen wir los.<\/p>\n<p>Wir verwenden 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 (<noindex><a rel=\"nofollow\" href=\"https:\/\/docs.oracle.com\/en\/database\/oracle\/oracle-database\/12.2\/comsc\/HR-sample-schema-table-descriptions.html\">Mehr erfahren<\/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 Aufgaben zum SELECT-Befehl 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. Eine Liste mit Informationen \u00fcber alle Mitarbeiter abrufen <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 '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. Abrufen Sie die Liste aller Mitarbeiter aus der 50. Abteilung (department_id) mit einem Gehalt (salary) von mehr als 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. Abrufen Sie die 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 Name mit dem Buchstaben 'a' endet.<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. Abrufen Sie die 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 mindestens 2 Buchstaben 'n' im Namen haben.<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. Abrufen Sie die 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 Mitarbeiter. Holen Sie sich eine Liste aller Mitarbeiter, deren Gehalt zwischen 8000 und 9000 liegt (einschlie\u00dflich)<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 Mitarbeiter. Holen Sie sich eine Liste aller ID der Manager<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 Mitarbeiter. 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>Mit Einzelzeilenfunktionen Ausgaben anpassen<\/b><\/p>\n<p>Tabelle Mitarbeiter. Holen Sie sich eine Liste aller Mitarbeiter, deren Vorname mehr als 10 Buchstaben hat<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, in deren Namen der Buchstabe 'b' ( Gro\u00df- und Kleinschreibung ignorierend) vorkommt.<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, die mindestens 2 Buchstaben 'a' im Namen haben.<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 Mitarbeiter. 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>Mitarbeiter Tabelle. Holen Sie sich die ersten 3 Ziffern der Telefonnummer eines 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>Abteilungstabelle. Holen Sie sich das erste Wort aus dem Namen der Abteilung, f\u00fcr die mehr als ein Wort im Titel vorhanden ist.<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>Mitarbeiter Tabelle. 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 Name mit dem Buchstaben 'm' endet und l\u00e4nger als 5 Zeichen 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>Dual Tabelle. 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>Mitarbeiter Tabelle. Holen Sie sich eine Liste aller Mitarbeiter, die mehr als 17 Jahre in der Firma sind.<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>Mitarbeiter Tabelle. Holen Sie sich eine Liste aller Mitarbeiter, deren letzte Ziffer der Telefonnummer ungerade ist und aus 3 Ziffern besteht, die durch Punkte getrennt sind.<br \/>\n<b class=\"spoiler_title\">L\u00f6sung<\/b><\/p>\n<pre><code class=\"sql\">W\u00c4HLEN *\n  AUS mitarbeitern\n WOHER     MOD (SUBSTR (telefon_nummer, -1), 2) != 0\n       UND INSTR (telefon_nummer,'.',1,3) = 0;\n<\/code><\/pre>\n<p>Tabelle Employees. Holen Sie sich eine Liste aller Mitarbeiter, bei denen im Wert von job_id nach dem Zeichen '_' mindestens 3 Zeichen vorhanden sind, wobei dieser Wert nach '_' nicht 'CLERK' sein darf.<br \/>\n<b class=\"spoiler_title\">L\u00f6sung<\/b><\/p>\n<pre><code class=\"sql\">W\u00c4HLEN *\n  AUS mitarbeitern\n WOHER     L\u00c4NGE (SUBSTR (job_id, INSTR (job_id, '_') + 1)) &gt; 3\n       UND 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\">W\u00c4HLEN telefon_nummer, ERSETZEN (telefon_nummer, '.', '-') neue_telefon_nummer\n  AUS mitarbeitern;\n<\/code><\/pre>\n<p>\n<b>Verwendung von Konversionsfunktionen und bedingten Ausdr\u00fccken<\/b><\/p>\n<p>Tabelle Mitarbeiter. Holen Sie sich eine Liste aller Mitarbeiter, die am ersten Tag eines Monats (beliebigen) eingestellt wurden.<br \/>\n<b class=\"spoiler_title\">L\u00f6sung<\/b><\/p>\n<pre><code class=\"sql\">W\u00c4HLEN *\n  AUS mitarbeitern\n WOHER TO_CHAR (eintrittsdatum, 'DD') = '01';\n<\/code><\/pre>\n<p>Tabelle Mitarbeiter. 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\">W\u00c4HLEN *\n  AUS mitarbeitern\n WOHER TO_CHAR (eintrittsdatum, 'YYYY') = '2008';\n<\/code><\/pre>\n<p>Tabelle DUAL. Zeigen Sie das Datum von morgen im Format an: Morgen ist der zweite Tag im Januar.<br \/>\n<b class=\"spoiler_title\">L\u00f6sung<\/b><\/p>\n<pre><code class=\"sql\">W\u00c4HLEN TO_CHAR (SYSDATE, 'fm\"\"Morgen ist \"\"Ddspth \"\"Tag von\"\" Monat') info\n  AUS DUAL;\n<\/code><\/pre>\n<p>Tabelle Mitarbeiter. Holen Sie sich eine Liste aller Mitarbeiter und das Einstellungsdatum jedes Mitarbeiters im Format: 21. Juni 2007.<br \/>\n<b class=\"spoiler_title\">L\u00f6sung<\/b><\/p>\n<pre><code class=\"sql\">W\u00c4HLEN vorname, TO_CHAR (eintrittsdatum, 'fmddth \"\"von\"\" Monat, YYYY') eintrittsdatum\n  AUS mitarbeitern;\n<\/code><\/pre>\n<p>Tabelle Mitarbeiter. Holen Sie sich eine Liste von Mitarbeitern mit einem Gehaltsanstieg von 20%. Zeigen Sie das Gehalt mit dem Dollarzeichen an.<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 Mitarbeiter. Holen Sie sich eine Liste aller Mitarbeiter, die im Februar 2007 in das Unternehmen eingetreten sind.<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 Mitarbeiter. Holen Sie sich eine Liste aller Mitarbeiter mit den Gesamtgeh\u00e4ltern (Gehalt + Kommission (%)) 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 Mitarbeiter. Holen Sie sich eine Liste aller Mitarbeiter und Informationen \u00fcber vorhandene 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 Mitarbeiter. Ermitteln Sie das Gehaltsniveau jedes Mitarbeiters: Weniger als 5000 gilt als niedrig, 5000 oder mehr und weniger als 10000 gilt als normal, 10000 oder mehr gilt als hoch.<br \/>\n<b class=\"spoiler_title\">L\u00f6sung<\/b><\/p>\n<pre><code class=\"sql\">SELECT first_name,\n       salary,\n       CASE\n           WHEN salary = 5000 AND salary &lt; 10000 THEN &#039;Normal&#039;\n           ELSE &#039;Hoch&#039;\n       END salary_level\n  FROM employees;\n<\/code><\/pre>\n<p>Tabelle L\u00e4nder. F\u00fcr jedes Land die Region anzeigen, in der 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\">SELECT country_name country,\n       DECODE (region_id,\n               1, 'Europa',\n               2, 'Amerika',\n               3, 'Asien',\n               4, 'Afrika',\n               'Unbekannt')\n           region\n  FROM countries;\n\nSELECT country_name\n           country,\n       CASE region_id\n           WHEN 1 THEN 'Europa'\n           WHEN 2 THEN 'Amerika'\n           WHEN 3 THEN 'Asien'\n           WHEN 4 THEN 'Afrika'\n           ELSE 'Unbekannt'\n       END\n           region\n  FROM countries;\n<\/code><\/pre>\n<p>\n<b>Aggregierte Datenberichterstattung mit den Gruppierungsfunktionen<\/b><\/p>\n<p>Tabelle Mitarbeiter. Erstellen Sie einen Bericht nach department_id mit dem niedrigsten und h\u00f6chsten Gehalt, dem fr\u00fchesten und sp\u00e4testen Einstellungsdatum und der Anzahl der Mitarbeiter. Sortieren Sie nach der Anzahl der Mitarbeiter (absteigend)<br \/>\n<b class=\"spoiler_title\">L\u00f6sung<\/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>Tabelle Mitarbeiter. Wie viele Mitarbeiter haben Vornamen, die mit demselben Buchstaben beginnen? Sortieren nach Anzahl. 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\">SELECT SUBSTR(first_name, 1, 1) AS 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>Tabelle Mitarbeiter. Wie viele Mitarbeiter arbeiten in derselben Abteilung und erhalten dasselbe Gehalt?<br \/>\n<b class=\"spoiler_title\">L\u00f6sung<\/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>Tabelle Mitarbeiter. Erhalten Sie einen Bericht dar\u00fcber, 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\">SELECT TO_CHAR(hire_Date, 'Day') AS day, COUNT(*)\n    FROM employees\nGROUP BY TO_CHAR(hire_Date, 'Day')\nORDER BY 2 DESC;\n<\/code><\/pre>\n<p>Tabelle Mitarbeiter. Erhalten Sie einen Bericht dar\u00fcber, wie viele Mitarbeiter j\u00e4hrlich eingestellt wurden. Nach Anzahl sortieren.<br \/>\n<b class=\"spoiler_title\">L\u00f6sung<\/b><\/p>\n<pre><code class=\"sql\">SELECT TO_CHAR(hire_date, 'YYYY') AS year, COUNT(*)\n    FROM employees\nGROUP BY TO_CHAR(hire_date, 'YYYY');\n<\/code><\/pre>\n<p>Tabelle Mitarbeiter. Erhalten Sie die Anzahl der Abteilungen, in denen Mitarbeiter besch\u00e4ftigt sind.<br \/>\n<b class=\"spoiler_title\">L\u00f6sung<\/b><\/p>\n<pre><code class=\"sql\">SELECT COUNT(COUNT(*)) AS department_count\n    FROM employees\n   WHERE department_id IS NOT NULL\nGROUP BY department_id;\n<\/code><\/pre>\n<p>Tabelle Mitarbeiter. Erhalten Sie eine 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\">  SELECT department_id\n    FROM employees\nGROUP BY department_id\n  HAVING COUNT(*) &gt; 30;\n<\/code><\/pre>\n<p>Tabelle Mitarbeiter. Holen Sie sich die Liste der department_id und den gerundeten Durchschnittslohn der Angestellten in jeder Abteilung. <br \/>\n<b class=\"spoiler_title\">L\u00f6sung<\/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>Tabelle L\u00e4nder. Holen Sie sich die Liste der region_id, f\u00fcr die die Summe aller Buchstaben in den country_name mehr als 60 betr\u00e4gt.<br \/>\n<b class=\"spoiler_title\">L\u00f6sung<\/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>Tabelle Mitarbeiter. Holen Sie sich die Liste der department_id, in denen Angestellte mit mehreren (&gt;1) job_id arbeiten.<br \/>\n<b class=\"spoiler_title\">L\u00f6sung<\/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>Tabelle Mitarbeiter. Holen Sie sich die Liste der manager_id, deren Anzahl an Untergebenen gr\u00f6\u00dfer als 5 ist und deren Gehaltssumme \u00fcber 50000 liegt.<br \/>\n<b class=\"spoiler_title\">L\u00f6sung<\/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>Tabelle Mitarbeiter. Holen Sie sich die Liste der manager_id, deren durchschnittliches Gehalt aller Untergebenen zwischen 6000 und 9000 liegt und die keine Boni erhalten (commission_pct ist leer).<br \/>\n<b class=\"spoiler_title\">L\u00f6sung<\/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>Tabelle Employees. Holen Sie sich das maximalen Gehalt aller Mitarbeiter mit job_id, die auf das Wort 'CLERK' enden.<br \/>\n<b class=\"spoiler_title\">L\u00f6sung<\/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>Tabelle Mitarbeiter. Die maximale Gehaltsspanne unter allen durchschnittlichen Geh\u00e4ltern nach Abteilung erhalten.<br \/>\n<b class=\"spoiler_title\">L\u00f6sung<\/b><\/p>\n<pre><code class=\"sql\">  SELECT MAX (AVG (salary))\n    FROM employees\nGROUP BY department_id;\n<\/code><\/pre>\n<p>Tabelle Mitarbeiter. Die Anzahl der Mitarbeiter mit der gleichen Anzahl an Buchstaben im Vornamen ermitteln. Dabei nur diejenigen anzeigen, deren Name l\u00e4nger als 5 Buchstaben ist und deren Anzahl mehr als 20 betr\u00e4gt. Nach der L\u00e4nge des Namens sortieren.<br \/>\n<b class=\"spoiler_title\">L\u00f6sung<\/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>Daten aus mehreren Tabellen mittels Joins anzeigen.<\/b><\/p>\n<p>Tabelle Mitarbeiter, Abteilungen, Standorte, L\u00e4nder, Regionen. Eine Liste der Regionen und die Anzahl der Mitarbeiter in jeder Region abrufen.<br \/>\n<b class=\"spoiler_title\">L\u00f6sung<\/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>Tabelle Mitarbeiter, Abteilungen, Standorte, L\u00e4nder, Regionen. Detaillierte Informationen zu jedem Mitarbeiter abrufen:<br \/>\nVorname, Nachname, Abteilung, Beruf, 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       Landesname,\n       Regionsname\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       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 Mitarbeiter. Zeigen Sie alle Manager an, die mehr als 6 Mitarbeiter unter sich haben.<br \/>\n<b class=\"spoiler_title\">L\u00f6sung<\/b><\/p>\n<pre><code class=\"sql\">  W\u00c4HLEN Sie man.vorname, COUNT (*)\n    AUS Mitarbeitern emp JOIN Mitarbeitern man ON (emp.manager_id = man.employee_id)\nGRUPPIEREN SIE NACH man.vorname\n  HAVING COUNT (*) &gt; 6;\n<\/code><\/pre>\n<p>Tabelle Mitarbeiter. Zeigen Sie alle Mitarbeiter an, die niemandem unterstellt sind.<br \/>\n<b class=\"spoiler_title\">L\u00f6sung<\/b><\/p>\n<pre><code class=\"sql\">W\u00c4HLEN Sie emp.vorname\n  AUS Mitarbeitern emp\n       LINKEN JOIN Mitarbeitern man ON (emp.manager_id = man.employee_id)\n WOHER man.VORNAME IST NULL;\n\nW\u00c4HLEN Sie vorname\n  AUS Mitarbeitern\n WOHER manager_id IST NULL;\n<\/code><\/pre>\n<p>Tabelle Mitarbeiter, Jobhistorie. In der Tabelle Mitarbeiter sind alle Mitarbeiter gespeichert. In der Tabelle Jobhistorie sind Mitarbeiter gespeichert, die das Unternehmen verlassen haben. Berichten Sie \u00fcber alle Mitarbeiter und deren Status im Unternehmen (Aktiv oder das Unternehmen mit Abgangsdatum verlassen).<br \/>\nBeispiel:<br \/>\nvorname | status<br \/>\nJennifer | Hat das Unternehmen am 31. Dezember 2006 verlassen.<br \/>\nClara | Derzeit Besch\u00e4ftigt<br \/>\n<b class=\"spoiler_title\">L\u00f6sung<\/b><\/p>\n<pre><code class=\"sql\">W\u00c4HLEN Sie vorname,\n       NVL2 (\n           end_daumen,\n           TO_CHAR (end_date, 'fm\"\"Hat das Unternehmen verlassen am\"\" DD \"\"von\"\" Monat, YYYY'),\n           'Derzeit Besch\u00e4ftigt')\n           status\n  AUS Mitarbeitern e LINKEN JOIN job_history j ON (e.employee_id = j.employee_id);\n<\/code><\/pre>\n<p>Tabelle Mitarbeiter, Abteilungen, Standorte, L\u00e4nder, Regionen. Holen Sie sich eine Liste der Mitarbeiter, die in Europa (region_name) leben.<br \/>\n<b class=\"spoiler_title\">L\u00f6sung<\/b><\/p>\n<pre><code class=\"sql\"> SELECT first_name\n  FROM employees\n       JOIN departments USING (department_id)\n       JOIN locations USING (location_id)\n       JOIN countries USING (country_id)\n       JOIN regions USING (region_id)\n WHERE region_name = 'Europe';\n \n SELECT first_name\n  FROM employees e\n       JOIN departments d ON (e.department_id = d.department_id)\n       JOIN locations l ON (d.location_id = l.location_id)\n       JOIN countries c ON (l.country_id = c.country_id)\n       JOIN regions r ON (c.region_id = r.region_id)\n WHERE region_name = 'Europe';\n<\/code><\/pre>\n<p>Tabelle Mitarbeiter, Abteilungen. Zeigen Sie alle Abteilungen an, in denen mehr als 30 Mitarbeiter arbeiten.<br \/>\n<b class=\"spoiler_title\">L\u00f6sung<\/b><\/p>\n<pre><code class=\"sql\">SELECT department_name, COUNT (*)\n    FROM employees e JOIN departments d ON (e.department_id = d.department_id)\nGROUP BY department_name\n  HAVING COUNT (*) &gt; 30;\n<\/code><\/pre>\n<p>Tabelle Mitarbeiter, Abteilungen. Zeigen Sie alle Mitarbeiter, die in keiner Abteilung sind.<br \/>\n<b class=\"spoiler_title\">L\u00f6sung<\/b><\/p>\n<pre><code class=\"sql\">SELECT first_name\n  FROM employees e\n       LEFT JOIN departments d ON (e.department_id = d.department_id)\n WHERE d.department_name IS NULL;\n\nSELECT first_name\n  FROM employees\n WHERE department_id IS NULL;\n<\/code><\/pre>\n<p>Tabelle Mitarbeiter, Abteilungen. Zeigen Sie alle Abteilungen an, in denen es keine Mitarbeiter gibt.<br \/>\n<b class=\"spoiler_title\">L\u00f6sung<\/b><\/p>\n<pre><code class=\"sql\">SELECT department_name\n  FROM employees e\n       RIGHT JOIN departments d ON (e.department_id = d.department_id)\n WHERE first_name IS NULL;\n<\/code><\/pre>\n<p>Tabelle Mitarbeiter. Zeigen Sie alle Mitarbeiter, die keine Untergebenen haben.<br \/>\n<b class=\"spoiler_title\">L\u00f6sung<\/b><\/p>\n<pre><code class=\"sql\">W\u00c4HLEN Sie man.first_name\n  VON employees emp\n       RECHTS JOIN employees man ON (emp.manager_id = man.employee_id)\n WO emp.FIRST_NAME IST NULL;\n<\/code><\/pre>\n<p>Tabelle Employees, Jobs, Abteilungen. Zeigen Sie Mitarbeiter im Format: First_name, Jobtitel, Abteilungsname.<br \/>\nBeispiel:<br \/>\nFirst_name | Jobtitel | Abteilungsname<br \/>\nDonald | Versand | Versandmitarbeiter<br \/>\n<b class=\"spoiler_title\">L\u00f6sung<\/b><\/p>\n<pre><code class=\"sql\">W\u00c4HLEN Sie first_name, job_title, department_name\n  VON employees e\n       JOIN jobs j ON (e.job_id = j.job_id)\n       JOIN departments d ON (d.department_id = e.department_id);\n<\/code><\/pre>\n<p>Tabelle Employees. Erhalten Sie eine Liste von Mitarbeitern, deren Manager im Jahr 2005 eingestellt wurden, w\u00e4hrend diese Mitarbeiter selbst vor 2005 eingestellt wurden.<br \/>\n<b class=\"spoiler_title\">L\u00f6sung<\/b><\/p>\n<pre><code class=\"sql\">W\u00c4HLEN Sie emp.*\n  VON employees emp JOIN employees man ON (emp.manager_id = man.employee_id)\n WO     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 Employees. Erhalten Sie 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  VON 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 WO 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 Employees. Erhalten Sie eine Liste der Mitarbeiter mit dem l\u00e4ngsten Namen.<br \/>\n<b class=\"spoiler_title\">L\u00f6sung<\/b><\/p>\n<pre><code class=\"sql\">W\u00c4HLEN Sie *\n  VON employees\n WO LENGTH (first_name) =\n       (W\u00c4HLEN Sie MAX (LENGTH (first_name)) VON employees);\n<\/code><\/pre>\n<p>Tabelle Mitarbeiter. Holen Sie sich eine Liste von Mitarbeitern mit einem Gehalt \u00fcber dem Durchschnitt aller Mitarbeiter.<br \/>\n<b class=\"spoiler_title\">L\u00f6sung<\/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>Tabelle Mitarbeiter, Abteilungen, Standorte. Finden Sie die Stadt, in der die Mitarbeiter insgesamt weniger verdienen als \u00fcberall sonst.<br \/>\n<b class=\"spoiler_title\">L\u00f6sung<\/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>Tabelle Mitarbeiter. Holen Sie sich eine Liste von Mitarbeitern, deren Manager ein Gehalt von \u00fcber 15.000 Euro erh\u00e4lt.<br \/>\n<b class=\"spoiler_title\">L\u00f6sung<\/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>Tabelle Mitarbeiter, Abteilungen. Zeigen Sie alle Abteilungen an, in denen es keine Mitarbeiter gibt.<br \/>\n<b class=\"spoiler_title\">L\u00f6sung<\/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>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\">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>Tabelle Mitarbeiter. Zeigen Sie alle Manager an, die mehr als 6 Mitarbeiter unter sich haben.<br \/>\n<b class=\"spoiler_title\">L\u00f6sung<\/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>Tabelle Mitarbeiter, Abteilungen. Zeigen Sie die Mitarbeiter an, die in der IT-Abteilung t\u00e4tig sind.<br \/>\n<b class=\"spoiler_title\">L\u00f6sung<\/b><\/p>\n<pre><code class=\"sql\">W\u00c4HLEN *\n  AUS Mitarbeitern\n WHERE abteilung_id = (W\u00c4HLEN abteilung_id\n                          AUS abteilungen\n                         WHERE abteilungsname = 'IT');\n<\/code><\/pre>\n<p>Tabelle Employees, Jobs, Abteilungen. Zeigen Sie Mitarbeiter im Format: First_name, Jobtitel, Abteilungsname.<br \/>\nBeispiel:<br \/>\nFirst_name | Jobtitel | Abteilungsname<br \/>\nDonald | Versand | Versandmitarbeiter<br \/>\n<b class=\"spoiler_title\">L\u00f6sung<\/b><\/p>\n<pre><code class=\"sql\">W\u00c4HLEN vorname,\n       (W\u00c4HLEN beruf_bezeichnung\n          AUS jobs\n         WHERE beruf_id = e.beruf_id)\n           beruf_bezeichnung,\n       (W\u00c4HLEN abteilungsname\n          AUS abteilungen\n         WHERE abteilung_id = e.abteilung_id)\n           abteilungsname\n  AUS Mitarbeitern e;\n<\/code><\/pre>\n<p>Tabelle Employees. Erhalten Sie eine Liste von Mitarbeitern, deren Manager im Jahr 2005 eingestellt wurden, w\u00e4hrend diese Mitarbeiter selbst vor 2005 eingestellt wurden.<br \/>\n<b class=\"spoiler_title\">L\u00f6sung<\/b><\/p>\n<pre><code class=\"sql\">W\u00c4HLEN *\n  AUS Mitarbeitern\n WHERE     manager_id IN (W\u00c4HLEN mitarbeiter_id\n                            AUS Mitarbeitern\n                           WHERE TO_CHAR (einstellungsdatum, 'YYYY') = '2005')\n       UND einstellungsdatum &lt; TO_DATE (&#039;01012005&#039;, &#039;DDMMYYYY&#039;);\n<\/code><\/pre>\n<p>Tabelle Employees. Erhalten Sie 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 *\n  AUS Mitarbeitern e\n WHERE     manager_id IN (W\u00c4HLEN mitarbeiter_id\n                            AUS Mitarbeitern\n                           WHERE TO_CHAR (einstellungsdatum, 'MM') = '01')\n       UND (W\u00c4HLEN L\u00c4NGE (beruf_bezeichnung)\n              AUS jobs\n             WHERE beruf_id = e.beruf_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 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-novosti-interneta"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.10 - 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 \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\" \/>\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\/novosti-interneta\/sql-zanimatelnye-zadachki\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.10\" \/>\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 \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\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/de\/blog\/novosti-interneta\/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. Interessante Aufgaben | ProHoster","description":"Hallo, Habr! Seit \u00fcber 3 Jahren unterrichte ich SQL in verschiedenen Schulungszentren, und eine meiner Beobachtungen ist, dass die Studenten SQL besser erlernen und verstehen, wenn man ihnen Aufgaben stellt, anstatt ihnen nur die M\u00f6glichkeiten und theoretischen Grundlagen zu erkl\u00e4ren. In diesem Artikel teile ich mit Ihnen meine Liste von Aufgaben, die ich gebe.","canonical_url":"https:\/\/prohoster.info\/de\/blog\/novosti-interneta\/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 \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","og:url":"https:\/\/prohoster.info\/de\/blog\/novosti-interneta\/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"},"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}]}}