SQL. Ënnerhalung Puzzel

Moien Habr!

Zënter méi wéi 3 Joer léiere ech SQL a verschiddenen Trainingszenteren, an eng vu menge Beobachtungen ass datt d'Schüler SQL besser beherrschen a verstinn wann se eng Aufgab ginn, an net nëmmen iwwer d'Méiglechkeeten an d'theoretesch Fundamenter erzielt ginn.

An dësem Artikel wäert ech meng Lëscht vu Probleemer mat Iech deelen, déi ech de Studenten als Hausaufgaben ginn an op deenen mir verschidden Aarte vu Brainstorms féieren, wat zu engem déiwe a kloere Verständnis vu SQL féiert.

SQL. Ënnerhalung Puzzel

SQL (ˈɛsˈkjuˈɛl; Englesch strukturéiert Ufrosprooch) ass eng deklarativ Programméierungssprooch déi benotzt gëtt fir Daten an enger relationaler Datebank ze kreéieren, z'änneren a verwalten vun engem passenden Datebankmanagementsystem. Méi erfueren

Dir kënnt iwwer SQL aus verschiddene liesen Quellen.
Dësen Artikel ass net geduecht fir Iech SQL vun Null ze léieren.

Also loosse mer goen.

Mir wäerten déi bekannte benotzen HR Diagramm am Oracle mat sengen Dëscher (méi):

SQL. Ënnerhalung Puzzel
Ech bemierken datt mir nëmmen SELECT Aufgaben berücksichtegen. Et gi keng DML oder DDL Aufgaben hei.

Aufgaben

Beschränken a sortéieren Daten

Employéen Dësch. Kritt eng Lëscht mat Informatioun iwwer all Mataarbechter
Decisioun

SELECT * FROM employees

Employéen Dësch. Kritt eng Lëscht vun alle Mataarbechter mam Numm 'David'
Decisioun

SELECT *
  FROM employees
 WHERE first_name = 'David';

Employéen Dësch. Kritt eng Lëscht vun alle Mataarbechter mat job_id gläich wéi 'IT_PROG'
Decisioun

SELECT *
  FROM employees
 WHERE job_id = 'IT_PROG'

Employéen Dësch. Kritt eng Lëscht vun alle Mataarbechter aus dem 50. Departement (Department_id) mat enger Pai (Pai) méi wéi 4000
Decisioun

SELECT *
  FROM employees
 WHERE department_id = 50 AND salary > 4000;

Employéen Dësch. Kritt eng Lëscht vun alle Mataarbechter aus dem 20. an 30. Departement (department_id)
Decisioun

SELECT *
  FROM employees
 WHERE department_id = 20 OR department_id = 30;

Employéen Dësch. Kritt eng Lëscht vun alle Mataarbechter deenen hire leschte Buschtaf an hirem Numm 'a' ass
Decisioun

SELECT *
  FROM employees
 WHERE first_name LIKE '%a';

Employéen Dësch. Kritt eng Lëscht vun all Mataarbechter aus dem 50. an 80. Departement (Department_id) déi e Bonus hunn (de Wäert an der Kolonn commission_pct ass net eidel)
Decisioun

SELECT *
  FROM employees
 WHERE     (department_id = 50 OR department_id = 80)
       AND commission_pct IS NOT NULL;

Employéen Dësch. Kritt eng Lëscht vun alle Mataarbechter deenen hir Nimm mindestens 2 Buschtawen 'n' enthalen
Decisioun

SELECT *
  FROM employees
 WHERE first_name LIKE '%n%n%';

Employéen Dësch. Kritt eng Lëscht vun alle Mataarbechter deenen hir Nimm méi laang wéi 4 Buschtawen sinn
Decisioun

SELECT *
  FROM employees
 WHERE first_name LIKE '%_____%';

Employéen Dësch. Kritt eng Lëscht vun all Mataarbechter deenen hir Pai am Beräich vun 8000 bis 9000 ass (inklusiv)
Decisioun

SELECT *
  FROM employees
 WHERE salary BETWEEN 8000 AND 9000;

Employéen Dësch. Kritt eng Lëscht vun alle Mataarbechter deenen hiren Numm d'Symbol '%' enthält
Decisioun

SELECT *
  FROM employees
 WHERE first_name LIKE '%%%' ESCAPE '';

Employéen Dësch. Kritt eng Lëscht vun all Manager IDen
Decisioun

SELECT DISTINCT manager_id
  FROM employees
 WHERE manager_id IS NOT NULL;

Employéen Dësch. Kritt eng Lëscht vun de Mataarbechter mat hire Positiounen am Format: Donald(sh_clerk)
Decisioun

SELECT first_name || '(' || LOWER (job_id) || ')' employee FROM employees;

Benotzt Single-Row Funktiounen fir d'Ausgab ze personaliséieren

Employéen Dësch. Kritt eng Lëscht vun alle Mataarbechter deenen hir Nimm méi laang wéi 10 Buschtawen sinn
Decisioun

SELECT *
  FROM employees
 WHERE LENGTH (first_name) > 10;

Employéen Dësch. Kritt eng Lëscht vun alle Mataarbechter, déi de Buschtaf 'b' an hirem Numm hunn (case-insensitive)
Decisioun

SELECT *
  FROM employees
 WHERE INSTR (LOWER (first_name), 'b') > 0;

Employéen Dësch. Kritt eng Lëscht vun alle Mataarbechter deenen hir Nimm mindestens 2 Buschtawen 'a' enthalen
Decisioun

SELECT *
  FROM employees
 WHERE INSTR (LOWER (first_name),'a',1,2) > 0;

Employéen Dësch. Kritt eng Lëscht vun all Mataarbechter deenen hir Pai e Multiple vun 1000 ass
Decisioun

SELECT *
  FROM employees
 WHERE MOD (salary, 1000) = 0;

Employéen Dësch. Kritt déi éischt 3-Zifferen Nummer vun der Telefonsnummer vun engem Employé wann seng Nummer am Format XXX.XXX.XXXX ass
Decisioun

SELECT phone_number, SUBSTR (phone_number, 1, 3) new_phone_number
  FROM employees
 WHERE phone_number LIKE '___.___.____';

Dësch vun Departementer. Kritt dat éischt Wuert vum Departement Numm fir déi, déi méi wéi ee Wuert am Numm hunn
Decisioun

SELECT department_name,
       SUBSTR (department_name, 1, INSTR (department_name, ' ')-1)
           first_word
  FROM departments
 WHERE INSTR (department_name, ' ') > 0;

Employéen Dësch. Kritt Employé Nimm ouni éischten a leschte Buschtaf am Numm
Decisioun

SELECT first_name, SUBSTR (first_name, 2, LENGTH (first_name) - 2) new_name
  FROM employees;

Employéen Dësch. Kritt eng Lëscht vun alle Mataarbechter deenen hire leschte Buschtaf an hirem Numm 'm' ass an deenen hiren Numm méi laang wéi 5 ass
Decisioun

SELECT *
  FROM employees
 WHERE SUBSTR (first_name, -1) = 'm' AND LENGTH(first_name)>5;

Dësch Dual. Kréien nächst Freideg Datum
Decisioun

SELECT NEXT_DAY (SYSDATE, 'FRIDAY') next_friday FROM DUAL;

Employéen Dësch. Kritt eng Lëscht vun alle Mataarbechter, déi fir d'Firma fir méi wéi 17 Joer geschafft hunn
Decisioun

SELECT *
  FROM employees
 WHERE MONTHS_BETWEEN (SYSDATE, hire_date) / 12 > 17;

Employéen Dësch. Kritt eng Lëscht vun alle Mataarbechter deenen hir lescht Ziffer vun hirer Telefonsnummer komesch ass a besteet aus 3 Zuelen getrennt vun enger Punkt
Decisioun

SELECT *
  FROM employees
 WHERE     MOD (SUBSTR (phone_number, -1), 2) != 0
       AND INSTR (phone_number,'.',1,3) = 0;

Employéen Dësch. Kritt eng Lëscht vun alle Mataarbechter, deenen hiren job_id Wäert nom '_' Schëld op d'mannst 3 Zeechen huet, awer dëse Wäert nom '_' ass net gläich wéi 'CLERK'
Decisioun

SELECT *
  FROM employees
 WHERE     LENGTH (SUBSTR (job_id, INSTR (job_id, '_') + 1)) > 3
       AND SUBSTR (job_id, INSTR (job_id, '_') + 1) != 'CLERK';

Employéen Dësch. Kritt eng Lëscht vun alle Mataarbechter andeems Dir all '.' am PHONE_NUMBER Wäert ersetzt op '-'
Decisioun

SELECT phone_number, REPLACE (phone_number, '.', '-') new_phone_number
  FROM employees;

Benotzt Konversiounsfunktiounen a Bedingungsausdréck

Employéen Dësch. Kritt eng Lëscht vun alle Mataarbechter, déi um éischten Dag vum Mount op d'Aarbecht komm sinn (all)
Decisioun

SELECT *
  FROM employees
 WHERE TO_CHAR (hire_date, 'DD') = '01';

Employéen Dësch. Kritt eng Lëscht vun alle Mataarbechter, déi 2008 op d'Aarbecht komm sinn
Decisioun

SELECT *
  FROM employees
 WHERE TO_CHAR (hire_date, 'YYYY') = '2008';

Dësch DUAL. Weist den Datum vu muer am Format: Muer ass den zweeten Januar
Decisioun

SELECT TO_CHAR (SYSDATE, 'fm""Tomorrow is ""Ddspth ""day of"" Month')     info
  FROM DUAL;

Employéen Dësch. Kritt eng Lëscht vun alle Mataarbechter an den Datum wou all Employé op d'Aarbecht ukomm ass am Format: 21. Juni 2007
Decisioun

SELECT first_name, TO_CHAR (hire_date, 'fmddth ""of"" Month, YYYY') hire_date
  FROM employees;

Employéen Dësch. Kritt eng Lëscht vun de Mataarbechter mat erhéichte Gehälter ëm 20%. Show Gehalt mat Dollar Zeechen
Decisioun

SELECT first_name, TO_CHAR (salary + salary * 0.20, 'fm$999,999.00') new_salary
  FROM employees;

Employéen Dësch. Kritt eng Lëscht vun alle Mataarbechter, déi am Februar 2007 ugefaang hunn ze schaffen.
Decisioun

SELECT *
  FROM employees
 WHERE hire_date BETWEEN TO_DATE ('01.02.2007', 'DD.MM.YYYY')
                     AND LAST_DAY (TO_DATE ('01.02.2007', 'DD.MM.YYYY'));

SELECT *
  FROM employees
 WHERE to_char(hire_date,'MM.YYYY') = '02.2007'; 

Dësch DUAL. Bréngt den aktuellen Datum, + Sekonn, + Minutt, + Stonn, + Dag, + Mount, + Joer eraus
Decisioun

SELECT SYSDATE                          now,
       SYSDATE + 1 / (24 * 60 * 60)     plus_second,
       SYSDATE + 1 / (24 * 60)          plus_minute,
       SYSDATE + 1 / 24                 plus_hour,
       SYSDATE + 1                      plus_day,
       ADD_MONTHS (SYSDATE, 1)          plus_month,
       ADD_MONTHS (SYSDATE, 12)         plus_year
  FROM DUAL;

Employéen Dësch. Kritt eng Lëscht vun all Mataarbechter mat voller Pai (Pai + Kommissioun_pct(%)) am Format: $24,000.00
Decisioun

SELECT first_name, salary, TO_CHAR (salary + salary * NVL (commission_pct, 0), 'fm$99,999.00') full_salary
  FROM employees;

Employéen Dësch. Kritt eng Lëscht vun alle Mataarbechter an Informatioun iwwer d'Disponibilitéit vu Gehaltbonusen (Jo / Nee)
Decisioun

SELECT first_name, commission_pct, NVL2 (commission_pct, 'Yes', 'No') has_bonus
  FROM employees;

Employéen Dësch. Kritt de Gehaltsniveau vun all Employé: Manner wéi 5000 gëtt als nidderegen Niveau ugesinn, Méi wéi oder gläich wéi 5000 a manner wéi 10000 gëtt als Normalniveau ugesinn, Méi wéi oder gläich wéi 10000 gëtt als Héichniveau ugesinn
Decisioun

SELECT first_name,
       salary,
       CASE
           WHEN salary < 5000 THEN 'Low'
           WHEN salary >= 5000 AND salary < 10000 THEN 'Normal'
           ELSE 'High'
       END salary_level
  FROM employees;

Dësch Länner. Fir all Land, weist d'Regioun an där et läit: 1-Europa, 2-Amerika, 3-Asien, 4-Afrika (ouni Member)
Decisioun

SELECT country_name country,
       DECODE (region_id,
               1, 'Europe',
               2, 'America',
               3, 'Asia',
               4, 'Africa',
               'Unknown')
           region
  FROM countries;

SELECT country_name
           country,
       CASE region_id
           WHEN 1 THEN 'Europe'
           WHEN 2 THEN 'America'
           WHEN 3 THEN 'Asia'
           WHEN 4 THEN 'Africa'
           ELSE 'Unknown'
       END
           region
  FROM countries;

Berichterstattung aggregéiert Daten mat de Gruppfunktiounen

Employéen Dësch. Kritt e Bericht vun department_id mat dem Minimum a Maximum Pai, fréi a spéit Datumen vun Arrivée op der Aarbecht an der Zuel vun de Mataarbechter. Sortéiert no Unzuel vun den Ugestallten (ofstigend)
Decisioun

  SELECT department_id,
         MIN (salary) min_salary,
         MAX (salary) max_salary,
         MIN (hire_date) min_hire_date,
         MAX (hire_date) max_hire_Date,
         COUNT (*) count
    FROM employees
GROUP BY department_id
order by count(*) desc;

Employéen Dësch. Wéi vill Mataarbechter deenen hir Nimm mam selwechte Buschtaf ufänken? Sortéiert no Quantitéit. Weist nëmmen déi wou d'Quantitéit méi wéi 1 ass
Decisioun

SELECT SUBSTR (first_name, 1, 1) first_char, COUNT (*)
    FROM employees
GROUP BY SUBSTR (first_name, 1, 1)
  HAVING COUNT (*) > 1
ORDER BY 2 DESC;

Employéen Dësch. Wéi vill Mataarbechter schaffen am selwechten Departement a kréien déi selwecht Pai?
Decisioun

SELECT department_id, salary, COUNT (*)
    FROM employees
GROUP BY department_id, salary
  HAVING COUNT (*) > 1;

Employéen Dësch. Kritt e Bericht wéi vill Mataarbechter all Dag vun der Woch agestallt goufen. Sortéiert no Quantitéit
Decisioun

SELECT TO_CHAR (hire_Date, 'Day') day, COUNT (*)
    FROM employees
GROUP BY TO_CHAR (hire_Date, 'Day')
ORDER BY 2 DESC;

Employéen Dësch. Kritt e Bericht wéi vill Mataarbechter no Joer agestallt goufen. Sortéiert no Quantitéit
Decisioun

SELECT TO_CHAR (hire_date, 'YYYY') year, COUNT (*)
    FROM employees
GROUP BY TO_CHAR (hire_date, 'YYYY');

Employéen Dësch. Kritt d'Zuel vun den Departementer déi Mataarbechter hunn
Decisioun

SELECT COUNT (COUNT (*))     department_count
    FROM employees
   WHERE department_id IS NOT NULL
GROUP BY department_id;

Employéen Dësch. Kritt eng Lëscht vun department_ids déi méi wéi 30 Mataarbechter hunn
Decisioun

  SELECT department_id
    FROM employees
GROUP BY department_id
  HAVING COUNT (*) > 30;

Employéen Dësch. Kritt eng Lëscht vun Departement_IDen an déi ofgerënnt Moyenne Pai vun Mataarbechter an all Departement.
Decisioun

  SELECT department_id, ROUND (AVG (salary)) avg_salary
    FROM employees
GROUP BY department_id;

Dësch Länner. Kritt d'Lëscht region_id d'Zomm vun alle Buschtawen vun all Land_Nimm an deenen et méi wéi 60 sinn
Decisioun

  SELECT region_id
    FROM countries
GROUP BY region_id
  HAVING SUM (LENGTH (country_name)) > 60;

Employéen Dësch. Kritt eng Lëscht vun department_ids an deenen d'Mataarbechter vu verschiddene (>1) job_ids schaffen
Decisioun

  SELECT department_id
    FROM employees
GROUP BY department_id
  HAVING COUNT (DISTINCT job_id) > 1;

Employéen Dësch. Kritt eng Lëscht vu Manager_ids deenen hir Unzuel vun Ënneruertnungen méi wéi 5 ass an d'Zomm vun alle Gehälter vu senge Ënneruerter méi wéi 50000 ass
Decisioun

  SELECT manager_id
    FROM employees
GROUP BY manager_id
  HAVING COUNT (*) > 5 AND SUM (salary) > 50000;

Employéen Dësch. Kritt eng Lëscht vu Manager_ids deenen hir duerchschnëttlech Pai vun all sengen Ënneruerter am Beräich vu 6000 bis 9000 ass an déi keng Bonus kréien (commission_pct ass eidel)
Decisioun

  SELECT manager_id, AVG (salary) avg_salary
    FROM employees
   WHERE commission_pct IS NULL
GROUP BY manager_id
  HAVING AVG (salary) BETWEEN 6000 AND 9000;

Employéen Dësch. Kritt déi maximal Pai vun all Mataarbechter job_id dat mam Wuert 'CLERK' endet
Decisioun

SELECT MAX (salary) max_salary
  FROM employees
 WHERE job_id LIKE '%CLERK';

SELECT MAX (salary) max_salary
  FROM employees
 WHERE SUBSTR (job_id, -5) = 'CLERK';

Employéen Dësch. Kritt déi maximal Pai ënnert all Moyenne Pai fir den Departement
Decisioun

  SELECT MAX (AVG (salary))
    FROM employees
GROUP BY department_id;

Employéen Dësch. Kritt d'Zuel vun de Mataarbechter mat der selwechter Zuel vu Buschtawen an hirem Numm. Gläichzäiteg, weisen nëmmen déi, deenen hir Numm Längt ass méi wéi 5 an d'Zuel vun de Mataarbechter mam selwechten Numm ass méi wéi 20. Sortéiert vun Numm Längt
Decisioun

  SELECT LENGTH (first_name), COUNT (*)
    FROM employees
GROUP BY LENGTH (first_name)
  HAVING LENGTH (first_name) > 5 AND COUNT (*) > 20
ORDER BY LENGTH (first_name);

  SELECT LENGTH (first_name), COUNT (*)
    FROM employees
   WHERE LENGTH (first_name) > 5
GROUP BY LENGTH (first_name)
  HAVING COUNT (*) > 20
ORDER BY LENGTH (first_name);

Weist Daten aus Multiple Dëscher mat Joins

Dësch Mataarbechter, Departementer, Plazen, Länner, Regiounen. Kritt eng Lëscht vu Regiounen an d'Zuel vun de Mataarbechter an all Regioun
Decisioun

  SELECT region_name, COUNT (*)
    FROM employees e
         JOIN departments d ON (e.department_id = d.department_id)
         JOIN locations l ON (d.location_id = l.location_id)
         JOIN countries c ON (l.country_id = c.country_id)
         JOIN regions r ON (c.region_id = r.region_id)
GROUP BY region_name;

Dësch Mataarbechter, Departementer, Plazen, Länner, Regiounen. Kritt detailléiert Informatiounen iwwer all Employé:
First_name, Last_name, Departement, Job, Street, Country, Region
Decisioun

SELECT First_name,
       Last_name,
       Department_name,
       Job_id,
       street_address,
       Country_name,
       Region_name
  FROM employees  e
       JOIN departments d ON (e.department_id = d.department_id)
       JOIN locations l ON (d.location_id = l.location_id)
       JOIN countries c ON (l.country_id = c.country_id)
       JOIN regions r ON (c.region_id = r.region_id);

Employéen Dësch. Weist all Manager déi méi wéi 6 Mataarbechter hunn, déi hinnen ënnergeuerdnet sinn
Decisioun

  SELECT man.first_name, COUNT (*)
    FROM employees emp JOIN employees man ON (emp.manager_id = man.employee_id)
GROUP BY man.first_name
  HAVING COUNT (*) > 6;

Employéen Dësch. Weist all Mataarbechter déi net jidderengem mellen
Decisioun

SELECT emp.first_name
  FROM employees  emp
       LEFT JOIN employees man ON (emp.manager_id = man.employee_id)
 WHERE man.FIRST_NAME IS NULL;

SELECT first_name
  FROM employees
 WHERE manager_id IS NULL;

Dësch Mataarbechter, Job_history. Den Employé Dësch späichert all Mataarbechter. Den Job_history Dësch späichert Mataarbechter déi d'Firma verlooss hunn. Kritt e Bericht iwwer all Mataarbechter an hire Status an der Firma (Schafft oder verlooss d'Firma mam Depart)
Beispill:
Virnumm | Status
Jennifer | Hien huet d'Firma den 31. Dezember 2006 verlooss
Clara | Am Moment schaffen
Decisioun

SELECT first_name,
       NVL2 (
           end_date,
           TO_CHAR (end_date, 'fm""Left the company at"" DD ""of"" Month, YYYY'),
           'Currently Working')
           status
  FROM employees e LEFT JOIN job_history j ON (e.employee_id = j.employee_id);

Dësch Mataarbechter, Departementer, Plazen, Länner, Regiounen. Kritt eng Lëscht vu Mataarbechter, déi an Europa liewen (Regioun_Numm)
Decisioun

 SELECT first_name
  FROM employees
       JOIN departments USING (department_id)
       JOIN locations USING (location_id)
       JOIN countries USING (country_id)
       JOIN regions USING (region_id)
 WHERE region_name = 'Europe';
 
 SELECT first_name
  FROM employees  e
       JOIN departments d ON (e.department_id = d.department_id)
       JOIN locations l ON (d.location_id = l.location_id)
       JOIN countries c ON (l.country_id = c.country_id)
       JOIN regions r ON (c.region_id = r.region_id)
 WHERE region_name = 'Europe';

Dësch Mataarbechter, Departementer. Show all Departementer mat méi wéi 30 Mataarbechter
Decisioun

SELECT department_name, COUNT (*)
    FROM employees e JOIN departments d ON (e.department_id = d.department_id)
GROUP BY department_name
  HAVING COUNT (*) > 30;

Dësch Mataarbechter, Departementer. Show all Mataarbechter déi net an all Departement sinn
Decisioun

SELECT first_name
  FROM employees  e
       LEFT JOIN departments d ON (e.department_id = d.department_id)
 WHERE d.department_name IS NULL;

SELECT first_name
  FROM employees
 WHERE department_id IS NULL;

Dësch Mataarbechter, Departementer. Show all Departementer an deenen et keng Mataarbechter sinn
Decisioun

SELECT department_name
  FROM employees  e
       RIGHT JOIN departments d ON (e.department_id = d.department_id)
 WHERE first_name IS NULL;

Employéen Dësch. Weist all Mataarbechter, déi keen hinnen ënnergeuerdnet hunn
Decisioun

SELECT man.first_name
  FROM employees  emp
       RIGHT JOIN employees man ON (emp.manager_id = man.employee_id)
 WHERE emp.FIRST_NAME IS NULL;

Dësch Mataarbechter, Aarbechtsplazen, Departementer. Show Mataarbechter am Format: First_name, Job_title, Department_Name.
Beispill:
Virnumm | Job_title | Departement_numm
Donald | Versand | Clerk Shipping
Decisioun

SELECT first_name, job_title, department_name
  FROM employees  e
       JOIN jobs j ON (e.job_id = j.job_id)
       JOIN departments d ON (d.department_id = e.department_id);

Employéen Dësch. Kritt eng Lëscht vu Mataarbechter, deenen hir Manager eng Aarbecht am Joer 2005 kruten, awer gläichzäiteg hunn dës Mataarbechter selwer eng Aarbecht virun 2005
Decisioun

SELECT emp.*
  FROM employees emp JOIN employees man ON (emp.manager_id = man.employee_id)
 WHERE     TO_CHAR (man.hire_date, 'YYYY') = '2005'
       AND emp.hire_date < TO_DATE ('01012005', 'DDMMYYYY');

Employéen Dësch. Kritt eng Lëscht vu Mataarbechter deenen hir Manager eng Aarbecht am Januar vun all Joer kruten an d'Job_title Längt vun dëse Mataarbechter ass méi wéi 15 Zeechen
Decisioun

SELECT emp.*
  FROM employees  emp
       JOIN employees man ON (emp.manager_id = man.employee_id)
       JOIN jobs j ON (emp.job_id = j.job_id)
 WHERE TO_CHAR (man.hire_date, 'MM') = '01' AND LENGTH (j.job_title) > 15;

Benotzt Subqueries fir Ufroen ze léisen

Employéen Dësch. Kritt eng Lëscht vun de Mataarbechter mat dem längsten Numm.
Decisioun

SELECT *
  FROM employees
 WHERE LENGTH (first_name) =
       (SELECT MAX (LENGTH (first_name)) FROM employees);

Employéen Dësch. Kritt eng Lëscht vu Mataarbechter mat enger Pai méi grouss wéi déi duerchschnëttlech Pai vun alle Mataarbechter.
Decisioun

SELECT *
  FROM employees
 WHERE salary > (SELECT AVG (salary) FROM employees);

Employéen, Departementer, Plaze Dësch. Kritt d'Stad an där d'Mataarbechter am ganzen am mannsten verdéngen.
Decisioun

SELECT city
    FROM employees e
         JOIN departments d ON (e.department_id = d.department_id)
         JOIN locations l ON (d.location_id = l.location_id)
GROUP BY city
  HAVING SUM (salary) =
         (  SELECT MIN (SUM (salary))
              FROM employees e
                   JOIN departments d ON (e.department_id = d.department_id)
                   JOIN locations l ON (d.location_id = l.location_id)
          GROUP BY city);

Employéen Dësch. Kritt eng Lëscht vu Mataarbechter, deenen hire Manager eng Pai vu méi wéi 15000 kritt.
Decisioun

SELECT *
  FROM employees
 WHERE manager_id IN (SELECT employee_id
                        FROM employees
                       WHERE salary > 15000)

Dësch Mataarbechter, Departementer. Show all Departementer an deenen et keng Mataarbechter sinn
Decisioun

SELECT *
  FROM departments
 WHERE department_id NOT IN (SELECT department_id
                               FROM employees
                              WHERE department_id IS NOT NULL);

Employéen Dësch. Weist all Mataarbechter déi net Manager sinn
Decisioun

SELECT *
  FROM employees
 WHERE employee_id NOT IN (SELECT manager_id
                             FROM employees
                            WHERE manager_id IS NOT NULL)

Employéen Dësch. Weist all Manager déi méi wéi 6 Mataarbechter hunn, déi hinnen ënnergeuerdnet sinn
Decisioun

SELECT *
  FROM employees e
 WHERE (SELECT COUNT (*)
          FROM employees
         WHERE manager_id = e.employee_id) > 6;

Dësch Mataarbechter, Departementer. Show Mataarbechter déi am IT Departement schaffen
Decisioun

SELECT *
  FROM employees
 WHERE department_id = (SELECT department_id
                          FROM departments
                         WHERE department_name = 'IT');

Dësch Mataarbechter, Aarbechtsplazen, Departementer. Show Mataarbechter am Format: First_name, Job_title, Department_Name.
Beispill:
Virnumm | Job_title | Departement_numm
Donald | Versand | Clerk Shipping
Decisioun

SELECT first_name,
       (SELECT job_title
          FROM jobs
         WHERE job_id = e.job_id)
           job_title,
       (SELECT department_name
          FROM departments
         WHERE department_id = e.department_id)
           department_name
  FROM employees e;

Employéen Dësch. Kritt eng Lëscht vu Mataarbechter, deenen hir Manager eng Aarbecht am Joer 2005 kruten, awer gläichzäiteg hunn dës Mataarbechter selwer eng Aarbecht virun 2005
Decisioun

SELECT *
  FROM employees
 WHERE     manager_id IN (SELECT employee_id
                            FROM employees
                           WHERE TO_CHAR (hire_date, 'YYYY') = '2005')
       AND hire_date < TO_DATE ('01012005', 'DDMMYYYY');

Employéen Dësch. Kritt eng Lëscht vu Mataarbechter deenen hir Manager eng Aarbecht am Januar vun all Joer kruten an d'Job_title Längt vun dëse Mataarbechter ass méi wéi 15 Zeechen
Decisioun

SELECT *
  FROM employees e
 WHERE     manager_id IN (SELECT employee_id
                            FROM employees
                           WHERE TO_CHAR (hire_date, 'MM') = '01')
       AND (SELECT LENGTH (job_title)
              FROM jobs
             WHERE job_id = e.job_id) > 15;

Dat ass alles fir de Moment.

Ech hoffen d'Aufgaben waren interessant a spannend.
Ech wäert dës Lëscht vun Aufgaben esou vill wéi méiglech derbäi.
Ech wäert och frou sinn all Kommentaren a Virschléi ze kréien.

PS: Wann iergendeen mat enger interessanter SELECT Aufgab kënnt, schreift an de Kommentaren an ech addéieren se op d'Lëscht.

Spass.

Source: will.com

Setzt e Commentaire