Język programowania baz danych
Listy zadań
Lista 1
1. Wyświetl nazwiska (last_name) i płace (salary) pracownikow mających
pensję większą niŜ 12000.
select last_name, salary FROM employees WHERE salary > 12000;
2. Wyświetl nazwiska i płace pracownikow, ktorzy zarabiają pomiędzy 5000
a 12000 i pracują w dziale (department) 20 lub 50.
select last_name, salary FROM employees WHERE salary > 5000 AND salary < 12000 AND (DEPARTMENT_ID = 20 OR DEPARTMENT_ID = 50);
3. Wyświetl nazwiska i job_id pracownikow, ktorzy nie mają kierownika
(manager_id).
SELECT last_name, job_id FROM employees WHERE manager_id IS NULL
4. Znajdź najmniejszą i największą płacę, średnią płacę oraz sumę pensji
wszystkich pracownikow.
SELECT MIN(salary) as "Najmniejsza", MAX(salary) as "Najwieksza", AVG(salary) as "Srednia", SUM(salary) as "Suma" FROM employees;
5. Znajdź najmniejszą i największą płacę, średnią płacę oraz sumę pensji
wszystkich pracownikow z podziałem na rodzaj pracy (job_id).
SELECT MIN(salary) as "Najmniejsza", MAX(salary) as "Najwieksza", AVG(salary) as "Srednia", SUM(salary) as "Suma", job_id FROM employees GROUP BY job_id;
6. Oblicz liczbę pracownikow mających tę samą pracę.
SELECT COUNT(*), job_id FROM employees GROUP BY job_id;
7. Wyświetl adresy wszystkich oddziałow. UŜyj złączenia naturalnego tabel
LOCATIONS i COUNTRIES.
Select * FROM Locations NATURAL JOIN Countries;
8. Wyświetl dane pracownikow (nazwisko, rodzaj pracy, numer i nazwę
oddziału) pracujących w Toronto.
Select last_name, job_title, department_id, department_name FROM employees NATURAL JOIN jobs NATURAL JOIN locations NATURAL JOIN departments WHERE city = 'Toronto';
9. Wyświetl nazwiska i numery pracownikow wraz z nazwiskami i numerami
ich kierownikow.
SELECT p.last_name, p.employee_id, k.manager_id, k.last_name FROM employees p JOIN employees k ON p.manager_id = k.employee_id;
10.Zmodyfikuj zapytanie z poprzedniego zadania tak, aby wyświetlani byli
rownieŜ pracownicy, ktorzy nie mają kierownika.
SELECT p.last_name, p.employee_id, k.employee_id, k.last_name FROM employees p LEFT JOIN employees k ON p.manager_id = k.employee_id;
11.Dla kaŜdego pracownika wyświetl jego nazwisko i numer oddziału,
w ktorym pracuje, oraz nazwiska wszystkich jego wspołpracownikow
z oddziału. Wyniki uporządkuj najpierw wg numeru oddziału, następnie
wg nazwisk pracownikow i w następnej kolejności wg nazwiski ich
wspołpracownikow.
SELECT p.last_name, p.department_id, w.last_name, w. department_id FROM employees p, employees w WHERE p.department_id = w.department_id AND p.employee_id <> w.employee_id ORDER BY w.last_name, p.department_id, p.last_name;
12.Wyświetl nazwiska i daty zatrudnienia (hire_date) wszystkich
pracownikow zatrudnionych poźniej niŜ pracownik o nazwisku Davies.
SELECT last_name, hire_date FROM employees WHERE hire_date > (SELECT hire_date FROM employees WHERE last_name = 'Davies');
13.Wyświetl nazwiska i daty zatrudnienia wszystkich wspołpracownikow
pracownika o nazwisku Mourgos (oczywiście bez pracownika Mourgos).
SELECT last_name, hire_date FROM employees WHERE department_id = (SELECT department_id FROM employees WHERE last_name = 'Mourgos') AND last_name <> 'Mourgos';
14.Wyświetl nazwiska, numery oraz pensje tych pracownikow, ktorzy
zarabiają ponad średnią pensję. Wynik zapytania uporządkuj malejąco
wg płacy.
SELECT last_name, employee_id, salary FROM employees WHERE salary > (SELECT AVG(salary) FROM employees) ORDER BY salary DESC;
15.Wyświetl nazwiska i numery pracownikow oddziałow, ktorych location_id
jest rowne 1700. Wyświetl ponadto numery oddziałow, w ktorych oni
pracują.
SELECT last_name, employee_id, department_id FROM employees NATURAL JOIN departments WHERE location_id = 1700