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 (ˈɛ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.
Dir kënnt iwwer SQL aus verschiddene liesen
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
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