4.2.1 Tvorba jednoduchých dotazov
- dotaz: Vypíšte meno pracovníka a názov pobočky
SELECT p.meno,po.mesto FROM pracovnici p, pobocka po WHERE p.id_pobocka=po.id_pobocka
Urobili sme dotaz použitím atribútov z troch rôznych tabuliek a to pracovnici a pobočka. Vypísali sa nám mená pracovníkov z tabuľky Pracovníci a mesto, kde daný pracovník pracuje z tabuľky Pobočka.
- dotaz: Vypíšte všetky úvery poskytnuté v Bratislave. Treba vypísať číslo úveru, meno pracovníka, druh úveru a mesto.
SELECT U.ID_CISLO_UVERU, P.MENO, DU.NAZOV, PO.MESTO FROM UVERY U, PRACOVNICI P, DRUH_UVERU DU, POBOCKA PO WHERE U.ID_PRACOVNIK=P.ID_PRACOVNIK AND P.ID_DRUH_UV=DU.ID_DRUH_UV AND P.ID_POBOCKA=PO.ID_POBOCKA AND po.mesto='BRATISLAVA'
Tu sme robili podobný dotaz ale chceli sme vypísať pracovníkov len z Bratislavy. Tiež sme použili atribúty z troch tabuliek a na koniec príkazu sme zadali ešte ďalšiu podmienku aby sa vypísala len Bratislava.
- dotaz: Vypíšte číslo úveru, druh žiadosti a dátum žiadosti pri úveroch, ktoré majú evidované nejaké žiadosti.
SELECT U.ID_CISLO_UVERU, Z.DRUH_Z, Z.DATUM_Z FROM UVERY U, ZIADOSTI Z WHERE U.ID_ZIADOSTI=Z.ID_ZIADOSTI
Tu sme použili číslo úveru z tabuľky úvery, druh žiadosti z tabuľky žiadosti a dátum žiadosti z tabuľky žiadosti. Do podmienok sme museli zadať aby sa nám zhodovalo id žiadosti.
- dotaz: Vypíšte meno klienta a jeho záväzky
SELECT k.meno,u.zavazky FROM klienti k, uvery u WHERE u.id_klient=k.id_klient
Zisťovali sme tu aké záväzky majú klienti splniť. Záväzky sme získali z tabuľky úvery a meno klienta z tabuľky klienti.
4.2.2 Tvorba zložitejších dotazov
5. Vypočítanie výšky úrokovej sadzby
CREATE VIEW C7 AS
SELECT U.ID_CISLO_UVERU, K.MENO, (ZAKLADNA_US+RIZIKOVA_MARZA+SPRAC_MARZA+OBCHODNA_MARZA)AS UROKOVA_SADZBA FROM UVERY U, KLIENTI K,UROKOVE_SADZBY US WHERE U.ID_CISLO_UVERU=US.ID_CISLO_UVERU AND U.ID_KLIENT=K.ID_KLIENT
SELECT * FROM C7
6. Vypočítanie priemernej úrokovej sadzby a jej zaokrúhlenie
- ROUND patrí medzi matematické funkcie, slúži na matematické zaokrúhlenie čísiel
CREATE VIEW C8 AS
SELECT AVG (UROKOVA_SADZBA) AS PRIEMERNA_US FROM C7
SELECT * FROM C8
SELECT ROUND (PRIEMERNA_US)AS ZAOKRUHLENA_PRIEMERNA_US FROM C8
Výstup
ZAOKRUHLENA_PRIEMERNA_US |
5 |
Vytvorila som si pomocný náhľad C7, kde som vypočítala výšku úrokovej sadzby pre každé číslo úveru. Potom som si pomocou tohto náhľadu vypočítala priemernú výšku úrokovej sadzby funkciou AVG a následne som použila funkciu ROUND na zaokrúhlenie vypočítanej priemernej úrokovej sadzby.
7. Chcela som vedieť, ktorý pracovník pracuje v akom meste. Pomocou funkcie CONCAT som spojila meno pracovníka s mestom
SELECT CONCAT (P.MENO, PO.MESTO) AS PRACOVNE_MESTO FROM POBOCKA PO, PRACOVNICI P WHERE P.ID_POBOCKA=PO.ID_POBOCKA
8. Vyhľadanie všetkých klientov, ktorý majú predložiť v záväzkoch kúpnu zmluvu.
SELECT U.ID_CISLO_UVERU, K.MENO, U.ZAVAZKY FROM KLIENTI K, UVERY U WHERE K.ID_KLIENT=U.ID_KLIENT AND ZAVAZKY LIKE '%KUPNA_ZMLUVA%'
Dostali sme všetkých klientov, ktorý majú predložiť záložnú zmluvu ale aj doklady.
9. Pre zaslanie oznámenia o dočerpaní úveru sme si dali vyhľadať klientov, ktorí majú dátum dočerpania 20. alebo 25. novembra 2009 pomocou IN.
- používa sa vo WHERE podmienke, keď chcem povedať, že hodnota stĺpca môže byť jedna z uvedených možností, čiže ak potrebujeme vyhľadať vnorené informácie
Dostali sme klientov, ktorý majú dátum dočerpania v dňoch 20. alebo 25.teho novembra. Zadali sme to za podmienku WHERE, kde musí platiť aj podmienka aby sa nám rovnalo ID_klienta z jednej entity s ID_klientom z druhej entity inak by sme dostali kar.súčin.
10. Potrebovala som zistiť, aký objem úverov bol poskytnutý v jednotlivých mestách. Najprv som si vytvorila náhľad C5, kde som si vybrala meno pracovníka mesto a výšku úveru. Potom som si ho zobrazila.
CREATE VIEW C5 AS
SELECT P.MENO, PO.MESTO, U.VYSKA_UVERU FROM PRACOVNICI P, UVERY U, POBOCKA PO WHERE U.ID_PRACOVNIK=P.ID_PRACOVNIK AND P.ID_POBOCKA=PO.ID_POBOCKA
SELECT * FROM C5
CREATE VIEW C6 AS
SELECT MESTO, SUM(VYSKA_UVERU) AS CELKOVY_OBJEM_PP FROM C1
GROUP BY (MESTO)
Použila som funkciu zoskupovania dát podľa mesta a dala som spočítať výšku úveru. Dostala som jednotlivé mestá a k nim celkový objem poskytnutých úverov v danom meste. Vytvorila som to ako náhľad C6, aby som mohla s tým pracovať v ďalšej úlohe a dala som si ho zobraziť.
11. Potrebovala som výsledok zotriediť pomocou ORDER BY desc a asc.
SELECT MESTO, CELKOVY_OBJEM_PP FROM C6
ORDER BY (CELKOVY_OBJEM_PP)ASC
SELECT MESTO, CELKOVY_OBJEM_PP FROM C2
ORDER BY (CELKOVY_OBJEM_PP)DESC
12. Zistiť výšku odmien jednotlivých pracovníkov.
- vytvorili sme si najprv pomocný náhľad C9
CREATE VIEW C9 AS
SELECT U.ID_CISLO_UVERU, P.MENO, DU.NAZOV, DU.ODMENA FROM UVERY U, PRACOVNICI P, DRUH_UVERU DU WHERE U.ID_PRACOVNIK=P.ID_PRACOVNIK AND P.ID_DRUH_UV=DU.ID_DRUH_UV
SELECT * FROM C9
SELECT MENO, SUM(ODMENA) AS ODMENY FROM C9 GROUP BY (MENO)ORDER BY (ODMENY)DESC
13. Aký počet úverov poskytli jednotlivý pracovníci
SELECT COUNT (U.ID_CISLO_UVERU)AS POCET_UVEROV, P.MENO FROM UVERY U, PRACOVNICI P WHERE U.ID_PRACOVNIK=P.ID_PRACOVNIK GROUP BY (P.MENO)
14. Obnova úrokovej sadzby dňa 25.11.2010 a k tomuto dňu sa zvyšovala základná sadzba o 1,02 % . Potrebovali sme vypísať údaje o klientovi na zaslanie oznámenia o zmene sadzby.
SELECT K.MENO, K.ULICA, K.CISLO_DOMU, K.PSC, K.MESTO, C7.UROKOVA_SADZBA+1.02 AS US, US.DATUM_OBNOVY_US FROM KLIENTI K, C7 C7, UROKOVE_SADZBY US, UVERY U WHERE US.ID_CISLO_UVERU=U.ID_CISLO_UVERU AND U.ID_KLIENT=K.ID_KLIENT AND C7.ID_CISLO_UVERU=U.ID_CISLO_UVERU AND DATUM_OBNOVY_US='25-11-10'
15. Zistiť či klient má k dátumu obnovy úrokovej sadzby aj podanú nejakú žiadosť
SELECT K.MENO, U.ID_CISLO_UVERU, US.DATUM_OBNOVY_US, Z.DRUH_Z, Z.POPIS FROM KLIENTI K, UVERY U, UROKOVE_SADZBY US, ZIADOSTI Z WHERE K.ID_KLIENT=U.ID_KLIENT AND U.ID_CISLO_UVERU=US.ID_CISLO_UVERU AND U.ID_ZIADOSTI=Z.ID_ZIADOSTI AND US.DATUM_OBNOVY_US=Z.DATUM_Z