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

Z GeoWikiCZ
Řádek 122: Řádek 122:


Vypište jméno, příjmení, kód všech zaměstnanců, jejichž pracoviště je it.
Vypište jméno, příjmení, kód všech zaměstnanců, jejichž pracoviště je it.
{{SQLTABLE3|jmeno|prijmeni|pracoviste_kod}}
| Pavel || Stehule  || it
|-
| Jan  || Pytel    || 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ž 30000.

Verze z 25. 3. 2007, 09:01

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ů.

jmeno prijmeni castka vlozeno popis
Pavel Stehule 30000.00 2007-01-01 Informatika
Radek Hirjak 25000.00 2007-01-01 Konstrukce
Jan Pytel 28000.00 2007-01-01 Informatika
Zdenek Stehule 20000.00 2007-01-01 Vyroba
Lucie Kubikova 18000.00 2007-01-01 Sekretariat
Tomas Zezula 50000.00 2007-01-01 Sekretariat
Pavel Stehule 30000.00 2007-02-01 Informatika
Radek Hirjak 25000.00 2007-02-01 Konstrukce
Jan Pytel 30000.00 2007-02-01 Informatika
Zdenek Stehule 20000.00 2007-02-01 Vyroba
Lucie Kubikova 18000.00 2007-02-01 Sekretariat
Tomas Zezula 50000.00 2007-02-01 Sekretariat
Pavel Stehule 31000.00 2007-03-01 Informatika
Radek Hirjak 26000.00 2007-03-01 Konstrukce
Jan Pytel 31000.00 2007-03-01 Informatika
Zdenek Stehule 20000.00 2007-03-01 Vyroba
Lucie Kubikova 19000.00 2007-03-01 Sekretariat
Tomas Zezula 60000.00 2007-03-01 Sekretariat
Pavel Stehule 30500.00 2007-04-01 Informatika
Radek Hirjak 25000.00 2007-04-01 Konstrukce
Jan Pytel 28000.00 2007-04-01 Informatika
Zdenek Stehule 20000.00 2007-04-01 Vyroba
Lucie Kubikova 18000.00 2007-04-01 Sekretariat
Tomas Zezula 51000.00 2007-04-01 Sekretariat

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

jmeno prijmeni pracoviste_kod
Pavel Stehule it
Jan Pytel 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;