You are on page 1of 2

Vježba 6: Ugniježđeni upiti

1. Ispišite ime i prezime radnika koji ima najveću plaću u kompaniji. Da li taj radnik ima
i najveću zaradu u kompaniji (zarada se sastoji od plaće i provizije)?

SELECT first_name, last_name, salary


FROM employees
WHERE salary = (SELECT max(salary)
FROM employees);

2. Ispišite imena i prezimena svih radnika u kompaniji, a koji imaju isti posao kao i
radnik Alexander Hunold.

SELECT first_name, last_name, job_id


FROM employees
WHERE job_id = (SELECT job_id FROM employees WHERE last_name =
'Hunold');

3. Ispišite imena i prezimena radnika koji imaju najveću plaću u svojem odjelu. Ispisati i
iznose pojedinih plaća.

SELECT first_name, last_name, department_id, salary


FROM employees
WHERE (salary, department_id) IN
(SELECT Max(salary), department_id FROM employees GROUP BY
department_id);

4. Ispišite imena i prezimena radnika koji imaju najveću zaradu u svojem odjelu. Ispisati
i iznose pojedinih zarada.

SELECT first_name, last_name, department_id, salary


FROM employees
WHERE salary > ANY
(SELECT DISTINCT salary FROM employees WHERE department_id=30)
ORDER BY salary DESC;

5. Nađite radnike koji imaju najmanje staža u svakom od pojedinih odjela.

SELECT first_name, last_name, department_id, salary


FROM employees
WHERE (hire_date, department_id) IN
(SELECT Max(hire_date), department_id FROM employees GROUP BY
department_id);
6. Ispišite sve radnike kojima je plaća manja od prosječne plaće odjela u kojem rade.

SELECT first_name, last_name, salary, department_id


FROM employees e
WHERE salary <
(SELECT AVG(salary)
FROM employees
WHERE department_id = e.department_id)
ORDER BY department_id;

7. Ispišite sve odjele u kojima nema zaposlenih radnika.

SELECT department_id
FROM employees e
WHERE not exists
(SELECT employee_id
FROM employees
WHERE manager_id = e.employee_id);

8. Ispišite sve odjele iz kojih su pojedini radnici otišli iz kompanije. Napomena: podaci o
radnicima koji su otišli iz kompanije nalaze se u JOB_HISTORY tablici.

SELECT department_id
FROM departments d
WHERE exists (Select department_id from job_history where department_id =
d.department_id);

9. Ispišite sve odjele koji imaju prosječnu plaću veću od odjela sa šifrom 100, te ih
poredajte prema šiframa odjela.

SELECT department_id, AVG(salary)


FROM employees
HAVING AVG(salary) >
(SELECT AVG(salary) FROM employees WHERE
department_id = 100)
GROUP BY department_id
ORDER BY department_id;

10. Ispišite sve odjele koji imaju ukupnu plaću manju od plaće radnika sa najvećom
plaćom u kompaniji.

Select department_id, sum(salary)


from employees
having sum(salary)< (Select max(salary) from employees)
group by department_id;

You might also like