Professional Documents
Culture Documents
Univerza V Ljubljani Fakulteta Za Fakulteta Za Računalništvo in Informatiko
Univerza V Ljubljani Fakulteta Za Fakulteta Za Računalništvo in Informatiko
Univerza V Ljubljani Fakulteta Za Fakulteta Za Računalništvo in Informatiko
Seminarska naloga
Tabela dept_manager:
to_date DATE,
);
Tabela salaries:
to_date DATE,
);
Če je časovni interval nezaključen, uporabi vrednost NULL, kar pomeni da je delavec še vedno na
istem oddelku. Prednost tega je, da se hitro vidi, kdo je še zaposlen v oddelku in omogoča preprosti
način, da jih najdeš. Slabosti uporabe null pa je, da porabi malo več prostora kot bi ga fiksna
vrednost, ter da moramo za določene operacije preverjati če je vrednost null (IS/IS Not NULL )
2.b) Z uporabo CTE preverite, če pogled pogled_nazivi in tabela titles vsebujeta enake vrstice.
CTE naj prikaže vrstice, ki se ne ujemajo. (10%)
WITH cte_titles AS (
FROM titles
), cte_pogled_nazivi AS (
FROM cte_titles
FROM cte_pogled_nazivi
);
DELIMITER //
BEGIN
FROM employees e
GROUP BY de.dept_no
LIMIT 3;
END //
DELIMITER ;
DELIMITER //
BEGIN
DELETE
FROM top3;
FROM employees e
JOIN dept_emp de
ON e.emp_no = de.emp_no
GROUP BY de.dept_no
LIMIT 3;
END //
DELIMITER ;
Trigger še za dept_emp
DELIMITER //
BEGIN
DELETE
FROM top3;
INSERT INTO top3
FROM employees e
JOIN dept_emp de
ON e.emp_no = de.emp_no
GROUP BY de.dept_no
LIMIT 3;
END //
DELIMITER ;
DELIMITER //
BEGIN
DELETE
FROM top3;
FROM employees e
JOIN dept_emp de
ON e.emp_no = de.emp_no
GROUP BY de.dept_no
LIMIT 3;
END //
DELIMITER ;
3. a) Med katerimi leti obstajajo podatki za plače v bazi? Napišite eno poizvedbo, ki vam poda
odgovor?
FROM salaries;
FROM employees e
JOIN (
FROM salaries s
GROUP BY emp_no
) s USING (emp_no)
LIMIT 10;
3 c) Koliko je bila povprečna starost vseh zaposlenih na dan 1.1.2000.
FROM employees;
3 d) Koliko časa v letih (lahko uporabite decimalna števila) je bila zaposlena vsaka oseba v tem
podjetju. Poleg časa izpišite tudi zaposlenčevo šifro, ime in priimek.
FROM employees
FROM employees
3 g) Za vsakega zaposlenega ugotovite njegovo tedensko plačo in število dni zaposlitve. Izpišite
zaposlenčevo šifro, tedensko plačo in število dni zaposlitve padajoče po tedenski plači.
FROM departments d
GROUP BY de.dept_no
FROM (
FROM dept_emp de
GROUP BY de.dept_no
) AS _
) AS povprecja_vsega
SELECT e.first_name
FROM employees e
GROUP BY e.emp_no
SELECT *
FROM salaries
SET profiling = 1;
SELECT *
Hitrost z indeksom
4.) V programskem jeziku Python napišite program, ki se poveže na podatkovno bazo in za vsak
posamezen oddelek izračuna število zaposlenih v določenemu letu in mesecu. Rezultate izračunanih
števil zaposlenih za vsak oddelek, leto in mesec shranite v tabelo SteviloZaposlenih(dept_no, year,
month, no_employed).
Prvo sem ustvaril povezavo z domačo bazo in naredil cursor. Potem sem naredil tabelo SteviloZaposlenih,
če še ni obstajala, če je jo pa zbrišem in na naredim novo. Po commitu sem napisal sql stavek, ki izračuna
število zaposlenih za vsak oddelek, leto in mesec ter ga vstavi v tabelo "SteviloZaposlenih".Tabelo
"dept_emp" sem združil z tabelo "employees" z uporabo "emp_no", Rezultate sem potem še grupiral.
Potem rabiš samo še izvršiti proizvedbo in potrditi spremembe v podatkovni bazi. Nato še zaprem cursor.
4.