Skip to content

Instantly share code, notes, and snippets.

@przemyslawjanpietrzak
Created May 27, 2017 18:30
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save przemyslawjanpietrzak/550f5824c2678dda604742cb8e65658f to your computer and use it in GitHub Desktop.
Save przemyslawjanpietrzak/550f5824c2678dda604742cb8e65658f to your computer and use it in GitHub Desktop.
databases-training
5.1
select nazwisko, etat, id_zesp, nazwa
from pracownicy join zespoly using (id_zesp)
;
5.2
select nazwisko, etat, id_zesp, nazwa
from pracownicy join zespoly using (id_zesp)
where adres = 'PIOTROWO 3A'
order by nazwisko
;
5.3
select nazwisko, etat, id_zesp, nazwa
from pracownicy join zespoly using (id_zesp)
where placa_pod > 400
order by nazwisko
;
5.4
select nazwisko, placa_pod, placa_od, placa_do, nazwa as kat_plac
from pracownicy p
join etaty e on p.etat = e.nazwa\
order by nazwisko, kat_plac
;
5.5
select nazwisko, placa_pod, etat, placa_od, placa_do
from pracownicy p
join etaty e on p.etat = e.nazwa
where
placa_pod BETWEEN (SELECT placa_od FROM etaty WHERE nazwa = 'SEKRETARKA') AND (SELECT placa_do FROM etaty WHERE nazwa = 'SEKRETARKA')
;
5.6
SELECT nazwisko, etat, placa_pod, nazwa
FROM pracownicy p JOIN etaty e ON p.etat = e.nazwa
WHERE etat != 'ASYSTENT'
ORDER BY placa_pod DESC
;
5.7
SELECT nazwisko, etat, placa_pod, placa_pod * 12 + NVL(placa_dod, 0) as roczna_placa, nazwa
FROM pracownicy p JOIN etaty e ON p.etat = e.nazwa
WHERE
etat in ('ASYSTENT', 'ADIUNKT') AND
(placa_pod * 12) + NVL(placa_dod, 0) > 5500
ORDER BY nazwisko
;
---OR---
SELECT p1.nazwisko, p1.id_prac, p1.id_szefa, p2.nazwisko as szef
FROM pracownicy p1 join pracownicy p2 ON p1.id_szefa = p2.id_prac
order by nazwisko
;
5.8
SELECT nazwisko as pracownik, id_prac, id_szefa, (SELECT nazwisko FROM pracownicy p2 WHERE p2.id_prac= p1.id_szefa)
FROM pracownicy p1
WHERE p1.id_szefa IS NOT NULL
order by nazwisko
;
---OR---
SELECT p1.nazwisko, p1.id_prac, p1.id_szefa, p2.nazwisko as szef
FROM pracownicy p1 LEFT JOIN pracownicy p2 ON p1.id_szefa = p2.id_prac
order by nazwisko
;
5.9
5.10
SELECT z.nazwa, count(p.nazwisko) as liczna, avg(placa_pod) as srednia
FROM zespoly z LEFT JOIN pracownicy p USING (id_zesp)
GROUP BY z.nazwa
ORDER BY nazwa
;
5.11
SELECT p1.nazwisko, count(p2.nazwisko) as liczba
FROM pracownicy p1 LEFT JOIN pracownicy p2 ON (p1.id_prac = p2.id_szefa)
GROUP BY p1.nazwisko
HAVING count(p2.nazwisko) > 0
ORDER BY liczba DESC
;
5.12
SELECT p1.nazwisko, p1.zatrudniony, p1.nazwisko, p2.zatrudniony, EXTRACT(year FROM p1.zatrudniony) - EXTRACT(year FROM p2.zatrudniony) as rok
FROM pracownicy p1 join pracownicy p2 ON p1.id_szefa= p2.id_prac
WHERE EXTRACT(year FROM p1.zatrudniony) - EXTRACT(year FROM p2.zatrudniony) < 10
ORDER BY rok
;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment