Cvičná databáze OSDL: Porovnání verzí

Z GeoWikiCZ
m (doplnění zadání příkladů)
Řádek 68: Řádek 68:
|-
|-
|}
|}
Vypište jméno, příjmení, částku, datum a popis všech zaměstnanců.
Vypište jméno, příjmení, kód všech zaměstnanců, jejichž pracoviště je it.
Vypište jméno, příjmení, částku všech zaměstnanců, jejichž měsíční příjem je větší než 30000.
Vypište jméno, příjmení, částku všech zaměstnanců, jejichž měsíční příjem je větší než 20000, jejich příjmení je Stehule.
Seřaďte je dle výše mzdy.
Vypište jméno, příjmení, částku všech zaměstnanců, kteří mají větší mzdu, než je průměrná.
Vypište, kolik zaměstnanců je na každém pracovišti.


== Skript ==
== Skript ==

Verze z 24. 3. 2007, 12:26

Tabulky

Cvičná databáze OSDL obsahuje tři tabulky

Pracoviste
kod
popis
Zamestnanci
id
jmeno
prijmeni
pracoviste_kod
vek
Mzdy
id
vlozeno
zamestnanec_id
castka

Příklady

Vypište seznam všech zaměstnanců.

id jmeno prijmeni pracoviste_kod vek
1 Pavel Stehule it 33
2 Radek Hirjak kc 32
3 Jan Pytel it 31
4 Zdenek Stehule vy 28
5 Lucie Kubikova sk 25
6 Tomas Zezula sk 45

Vypište jméno, příjmení a pracoviště všech zaměstnanců.

jmeno prijmeni popis
Pavel Stehule Informatika
Radek Hirjak Konstrukce
Jan Pytel Informatika
Zdenek Stehule Vyroba
Lucie Kubikova Sekretariat
Tomas Zezula Sekretariat

Vypište jméno, příjmení, částku, datum a popis všech zaměstnanců.

Vypište jméno, příjmení, kód všech zaměstnanců, jejichž pracoviště je it.

Vypište jméno, příjmení, částku všech zaměstnanců, jejichž měsíční příjem je větší než 30000.

Vypište jméno, příjmení, částku všech zaměstnanců, jejichž měsíční příjem je větší než 20000, jejich příjmení je Stehule. Seřaďte je dle výše mzdy.

Vypište jméno, příjmení, částku všech zaměstnanců, kteří mají větší mzdu, než je průměrná.

Vypište, kolik zaměstnanců je na každém pracovišti.

Skript

Skript pro založení cvičné databáze OSDL a naplnění tabulek je

DROP TABLE Pracoviste CASCADE;
DROP TABLE Zamestnanci CASCADE;
DROP TABLE Mzdy CASCADE;

CREATE TABLE Pracoviste(
  kod char(2) PRIMARY KEY,
  popis varchar(20) UNIQUE NOT NULL CHECK (popis <> '')
);

CREATE TABLE Zamestnanci(
  id SERIAL PRIMARY KEY,
  jmeno varchar(20) NOT NULL CHECK (jmeno <> ''),
  prijmeni varchar(20) NOT NULL CHECK (prijmeni <> ''),
  pracoviste_kod char(2) NOT NULL REFERENCES pracoviste(kod),
  vek integer NOT NULL CHECK(vek > 0)
);

CREATE TABLE Mzdy(
  id SERIAL PRIMARY KEY,
  vlozeno date NOT NULL DEFAULT(CURRENT_DATE),
  zamestnanec_id integer NOT NULL REFERENCES Zamestnanci(id),
  castka NUMERIC(8,2) NOT NULL CHECK (castka > 0.0)
);

INSERT INTO Pracoviste VALUES('kc','Konstrukce');
INSERT INTO Pracoviste VALUES('pr','Provoz');
INSERT INTO Pracoviste VALUES('sk','Sekretariat');
INSERT INTO Pracoviste VALUES('vy','Vyroba');
INSERT INTO Pracoviste VALUES('it','Informatika');

SELECT * FROM Pracoviste;

INSERT INTO Zamestnanci(jmeno, prijmeni, pracoviste_kod, vek) VALUES('Pavel', 'Stehule', 'it',33);
INSERT INTO Zamestnanci(jmeno, prijmeni, pracoviste_kod, vek) VALUES('Radek', 'Hirjak', 'kc', 32);
INSERT INTO Zamestnanci(jmeno, prijmeni, pracoviste_kod, vek) VALUES('Jan', 'Pytel', 'it', 31);
INSERT INTO Zamestnanci(jmeno, prijmeni, pracoviste_kod, vek) VALUES('Zdenek', 'Stehule', 'vy', 28);
INSERT INTO Zamestnanci(jmeno, prijmeni, pracoviste_kod, vek) VALUES('Lucie', 'Kubikova', 'sk', 25);
INSERT INTO Zamestnanci(jmeno, prijmeni, pracoviste_kod, vek) VALUES('Tomas', 'Zezula', 'sk', 45);

SELECT * FROM Zamestnanci;

INSERT INTO Mzdy VALUES(DEFAULT, '2007-01-01', 1, 30000);
INSERT INTO Mzdy VALUES(DEFAULT, '2007-01-01', 2, 25000);
INSERT INTO Mzdy VALUES(DEFAULT, '2007-01-01', 3, 28000);
INSERT INTO Mzdy VALUES(DEFAULT, '2007-01-01', 4, 20000);
INSERT INTO Mzdy VALUES(DEFAULT, '2007-01-01', 5, 18000);
INSERT INTO Mzdy VALUES(DEFAULT, '2007-01-01', 6, 50000);

INSERT INTO Mzdy VALUES(DEFAULT, '2007-02-01', 1, 30000);
INSERT INTO Mzdy VALUES(DEFAULT, '2007-02-01', 2, 25000);
INSERT INTO Mzdy VALUES(DEFAULT, '2007-02-01', 3, 30000);
INSERT INTO Mzdy VALUES(DEFAULT, '2007-02-01', 4, 20000);
INSERT INTO Mzdy VALUES(DEFAULT, '2007-02-01', 5, 18000);
INSERT INTO Mzdy VALUES(DEFAULT, '2007-02-01', 6, 50000);

INSERT INTO Mzdy VALUES(DEFAULT, '2007-03-01', 1, 31000);
INSERT INTO Mzdy VALUES(DEFAULT, '2007-03-01', 2, 26000);
INSERT INTO Mzdy VALUES(DEFAULT, '2007-03-01', 3, 31000);
INSERT INTO Mzdy VALUES(DEFAULT, '2007-03-01', 4, 20000);
INSERT INTO Mzdy VALUES(DEFAULT, '2007-03-01', 5, 19000);
INSERT INTO Mzdy VALUES(DEFAULT, '2007-03-01', 6, 60000);

INSERT INTO Mzdy VALUES(DEFAULT, '2007-04-01', 1, 30500);
INSERT INTO Mzdy VALUES(DEFAULT, '2007-04-01', 2, 25000);
INSERT INTO Mzdy VALUES(DEFAULT, '2007-04-01', 3, 28000);
INSERT INTO Mzdy VALUES(DEFAULT, '2007-04-01', 4, 20000);
INSERT INTO Mzdy VALUES(DEFAULT, '2007-04-01', 5, 18000);
INSERT INTO Mzdy VALUES(DEFAULT, '2007-04-01', 6, 51000);

SELECT * FROM Mzdy;