Temat: Problem z zadaniami
Mam podane dwie tabele i trzy zadania do nich. Próbowałem coś wymyślić, ale nie są to dobre rozwiązania:P Prosze o podanie poprawnych rozwiązań. Z góry dziękuję:)
DROP TABLE osoba2;
DROP TABLE wyplata2;
CREATE TABLE osoba2 (
id_osoba INT NOT NULL,
imie VARCHAR(20) NOT NULL,
nazwisko VARCHAR(20) NOT NULL,
data_ur DATE,
PRIMARY KEY (id_osoba));
INSERT INTO osoba2 VALUES (1, 'Jan', 'Kowalski','1971-09-18');
INSERT INTO osoba2 VALUES (2, 'Jerzy', 'Nowak','1973-11-07');
INSERT INTO osoba2 VALUES (3, 'Jakub', 'Kargul','1981-01-13');
INSERT INTO osoba2 VALUES (4, 'Anna', 'Pawlak','1975-12-19');
INSERT INTO osoba2 VALUES (5, 'Henryk', 'Majewski','1975-05-19');
CREATE TABLE wyplata2 (
id_wyplata INT NOT NULL,
id_osoba INT NOT NULL,
kwota INT NOT NULL,
tytulem VARCHAR(25) NOT NULL,
data_wplaty DATE,
PRIMARY KEY (id_wyplata));
INSERT INTO wyplata2 VALUES (1,1,3100,'wyplata styczen 2009','2009-01-10');
INSERT INTO wyplata2 VALUES (2,1,3100,'wyplata luty 2009','2009-02-10');
INSERT INTO wyplata2 VALUES (3,1,3100,'wyplata marzec 2009','2009-03-10');
INSERT INTO wyplata2 VALUES (4,1,3100,'wyplata kwiecien 2009','2009-04-10');
INSERT INTO wyplata2 VALUES (5,1,3100,'wyplata maj 2009','2009-05-10');
INSERT INTO wyplata2 VALUES (6,1,3100,'wyplata czerwiec 2009','2009-06-09');
INSERT INTO wyplata2 VALUES (7,2,4500,'wyplata styczen 2009','2009-01-10');
INSERT INTO wyplata2 VALUES (8,2,4500,'wyplata luty 2009','2009-02-10');
INSERT INTO wyplata2 VALUES (9,2,1000,'wyplata luty 2009','2009-02-15');
INSERT INTO wyplata2 VALUES (10,3,9100,'wyplata styczen 2009','2009-01-10');
--Zad A1
--Wyswietlic alfabetycznie osoby (nazwiska i imiona), które urodzily sie w
--miesiacu maju i nie otrzymaly dotad zadnej wyplaty.
SELECT o.imie, o.nazwisko
FROM osoba2 o JOIN wyplata2 w
ON o.id_osoba=w.id_osoba
WHERE date_part('month', TIMESTAMP data_ur)=5 AND id_wyplata IS NULL
ORDER BY o.nazwisko ASC, o.imie ASC;
--Zad A2
--Dla kazdej osoby znalezc laczna sume wyplat, o ile nie bylo dla tej osoby
--wiecej niz 5 wyplat. (Dla osob, ktore nie otrzymaly zadnej wyplaty taka
--suma powinna wynosic zero.)
SELECT o.imie, o.nazwisko, SUM(w.kwota)
FROM osoba2 o JOIN wyplata2 w
ON o.id_osoba=w.id_osoba
ORDER BY o.nazwisko ASC, o.imie ASC
HAVING COUNT(w.id_osoba) < 5;
--Zad A3
--Wyszukac osoby, ktore choc w jednym miesiacu otrzymaly wiecej niz jedna wyplate.