sql un mdx (multiple dimensional expression · web view2014/01/01 · ide rīks...

25
Datu izgūšana no datu bāzes (SELECT vaicājumi) Datu bāzes sistēma Datu bāze Datu bāzes vadības sistēma SQL redaktors (komandrindas ) SQL redaktors (teksta redaktors + palīdzība) Savienojums IDE rīks (Integrated Development Environment) Lietojums (lietojumprogra SQL SQL SQL SQL 1

Upload: doancong

Post on 07-Mar-2018

223 views

Category:

Documents


5 download

TRANSCRIPT

Page 1: SQL un MDX (Multiple Dimensional eXpression · Web view2014/01/01 · IDE rīks (Integrated Development Environment) SQL SQL Lietojums (lietojumprogramma) SQL valodas SELECT vaicājuma

Datu izgūšana no datu bāzes (SELECT vaicājumi)

Datu bāzes sistēma

Datu bāzeDatu bāzes

vadības sistēma

SQL redaktors(komandrindas)

SQL> SELECT...

SQL redaktors(teksta redaktors

+ palīdzība)

Savi

enoj

ums

IDE rīks (Integrated

Development Environment)

Lietojums (lietojumprogramma)

SQL

SQL

SQL

SQL

1

Page 2: SQL un MDX (Multiple Dimensional eXpression · Web view2014/01/01 · IDE rīks (Integrated Development Environment) SQL SQL Lietojums (lietojumprogramma) SQL valodas SELECT vaicājuma

SQL valodas SELECT vaicājuma piemērsselect f.committee_level "CC Level", f.name "CC Name",       (select kk.user_name from gl_loan.ln_cc_member kk where kk.id in      (select ii.cc_member_id from gl_loan.ln_cc_session_member ii       where ii.cc_session_id =a.cc_session_id and nvl(ii.deleted,0)=0      and ii.role='FIRST') and nvl(kk.deleted,0)=0) "1st decision maker",(select kk.user_name from gl_loan.ln_cc_member kk where kk.id in      (select ii.cc_member_id from gl_loan.ln_cc_session_member ii       where ii.cc_session_id =a.cc_session_id and nvl(ii.deleted,0)=0      and ii.role='SECOND') and nvl(kk.deleted,0)=0) "2st decision maker",a.case_name "LC Nr.",a.manager_name "Manager", a.customer_name "Customer name", a.customer_code "Customer code", decode(a.customer_type, 'P','Private', 'C', 'Legal', 'X', 'Non-client(error)' ) "Customer type", e.name "Product",

(select mm.name from gl_loan.ln_classificator mm where e.product_line=mm.code and mm.classif_type_id=15and mm.language='ENG'---'LAT' and nvl(mm.inactive,0)=0)"Product line", b.currency "Currency", (select l.decided_value       from gl_loan.ln_decision_row l, gl_loan.ln_product_row o       where l.product_decision_id = cc.id and o.product_id=b.product_id      and o.row_type_id=16 and nvl(o.deleted,0)=0 and l.product_row_id=o.id) "Interest", to_number(b.DECIDED_AMOUNT_LOCAL) "Amount", to_number(a.customer_new_risk )"New risk",(select l.decided_value       from gl_loan.ln_decision_row l, gl_loan.ln_product_row o       where l.product_decision_id = cc.id and o.product_id=b.product_id      and o.row_type_id=24 and nvl(o.deleted,0)=0 and l.product_row_id=o.id) "Maturity",(select mm.name from gl_loan.ln_classificator mm where       cc.decision=mm.code and mm.classif_type_id=22      and mm.language='ENG'      and nvl(mm.inactive,0)=0) "Product decision",(select mm.name from gl_loan.ln_classificator mm where       a.final_decision=mm.code and mm.classif_type_id=22      and mm.language='ENG'      and nvl(mm.inactive,0)=0) "LC decision",a.DECISION_DATE "Decision Date",(select mm.name from gl_loan.ln_classificator mm where

2

Page 3: SQL un MDX (Multiple Dimensional eXpression · Web view2014/01/01 · IDE rīks (Integrated Development Environment) SQL SQL Lietojums (lietojumprogramma) SQL valodas SELECT vaicājuma

a.current_status_code=mm.code and mm.classif_type_id=12and mm.language='ENG'and nvl(mm.inactive,0)=0) "LC status",(select mm.name from gl_loan.ln_classificator mm where a.finishing_event_code=mm.code and mm.classif_type_id=2and mm.language='ENG'and nvl(mm.inactive,0)=0) "Finishing event",a.created_by "Creator",

(select zz.nimi  from salesman.mp_kontor zz where zz.country_id='LV'and zz.business_unit_code in (select pp.business_unit_code from salesman.mp_haldur pp where pp.uname not in ('ANITAB','ANITA','ANITBERZ') and pp.missing='E' and pp.lkpv is null and pp.country_id='LV' and pp.nimi=upper (a.created_by))) "Creator branch",replace(cc.collateral,chr(13)||chr(10),' ') "Collateral", replace(cc.comments,chr(13)||chr(10),' ')  "Comments",DECODE(B.APPLICATION_TYPE,'N', 'New', 'C', 'Change', 'E' , 'Extend') "Appliation type"

from gl_loan.ln_loan_case a, gl_loan.ln_application_product b, gl_loan.ln_product e, gl_loan.ln_committee f, gl_loan.ln_cc_product_decision ccwhere  a.id=b.loancase_idand b.product_id=e.id and a.committee_id=f.id and nvl(e.deleted,0)=0 and  nvl(a.deleted,0)=0 and nvl(b.deleted,0)=0and e.country='LV' and cc.application_product_id=b.id and nvl(cc.deleted,0)=0and a.DECISION_DATE >=  '17-Apr-2006' and a.DECISION_DATE <=  '23-Apr-2006' order by f.committee_level, f.name, a.case_name

3

Page 4: SQL un MDX (Multiple Dimensional eXpression · Web view2014/01/01 · IDE rīks (Integrated Development Environment) SQL SQL Lietojums (lietojumprogramma) SQL valodas SELECT vaicājuma

SELECT vaicājuma pamatelementi

SELECT ... Kādas vērtības gribam iegūt (kolonu un funkciju)? (5)

FROM ... No kādām datu tabulām? (1)

WHERE ... Kādi ir rindu meklēšanas noteikumi? (2)

GROUP by ... Kādi ir rindu grupēšanas noteikumi? (3)

HAVING ... Kādi ir rindu grupu meklēšanas noteikumi? (4)

ORDER by ... Kā sakārtot iegūtos rezultātus? Šķirošanas norādes. (6)

4

Page 5: SQL un MDX (Multiple Dimensional eXpression · Web view2014/01/01 · IDE rīks (Integrated Development Environment) SQL SQL Lietojums (lietojumprogramma) SQL valodas SELECT vaicājuma

SELECT vaicājumu grafiskie attēlojumi

1. Tabulu struktūru izmantošana.

2. Datu vienību izmantošana.

Noteikumi

Noteikumi

RezultātsNoteikumi

5

Page 6: SQL un MDX (Multiple Dimensional eXpression · Web view2014/01/01 · IDE rīks (Integrated Development Environment) SQL SQL Lietojums (lietojumprogramma) SQL valodas SELECT vaicājuma

Izvadāmo vērtību norāde (projekcijas darbība)

Izvadāmās vērtības:1) tabulas kolonu vērtības;2) funkciju vērtības no kolonu vērtībām.

Tabula AAK1 K2 K3 K4 K5 K6

select ALL | DISTINCT | DISTINCTROW | [TOP n [PERCENT]]] K2, K4, K5from where

6

Page 7: SQL un MDX (Multiple Dimensional eXpression · Web view2014/01/01 · IDE rīks (Integrated Development Environment) SQL SQL Lietojums (lietojumprogramma) SQL valodas SELECT vaicājuma

Tabulas rindu (rakstu) atlase (selekcijas darbība)

Tabula BB

K1 K2 K3 K4 K5 K6

selectfrom where K2 = ... and > ... or < ... != ... Like "*A?" IS NULL NOT IN (...)

7

Page 8: SQL un MDX (Multiple Dimensional eXpression · Web view2014/01/01 · IDE rīks (Integrated Development Environment) SQL SQL Lietojums (lietojumprogramma) SQL valodas SELECT vaicājuma

Rindu (rakstu) grupēšana un grupu vērtību agregātu veidošana

Tabula CCK1 K2 K3 K4 K5 K6

b

1. grupa

2. grupa

selectfrom wheregroup by K6having COUNT(K2) = ... SUM(K4) >= ... MAX(K4) < ... MIN(K4) <> ... AVG(K4) > ...

∑∑

∑∑

8

Page 9: SQL un MDX (Multiple Dimensional eXpression · Web view2014/01/01 · IDE rīks (Integrated Development Environment) SQL SQL Lietojums (lietojumprogramma) SQL valodas SELECT vaicājuma

Vienas tabulas vaicājumiTabula Firmas

F_NUM F_NOS DIB_DAT STAT_KAP TEL ADRFirmas numurs Nosaukums Dibināšanas

datumsStatūtu kapitāls Telefons Adrese

1 AA 1998.12.05 50 000,00 Ls 7222222 Rīga, Garā iela 152 BB 1998.05.07 20 000,00 Ls 7111111 Rīga, Zirņu iela 33 CC 1999.03.05 100 000,00 Ls 7333333 Rīga, Avotu 12

1. Iegūt visu firmu nosaukumu sarakstu.

SELECT Firmas.F_NUM, Firmas.F_NOSFROM Firmas;

Firmas numurs Nosaukums1AA2BB3CC

2. Iegūt firmu, kuru statūtkapitāls lielāks par 50 000, nosaukumu sarakstu. Sinonīma izmantošana.

SELECT A.F_NUM, A.F_NOSFROM Firmas AWHERE A.STAT_KAP > 50000;Firmas numurs Nosaukums

3CC

9

Page 10: SQL un MDX (Multiple Dimensional eXpression · Web view2014/01/01 · IDE rīks (Integrated Development Environment) SQL SQL Lietojums (lietojumprogramma) SQL valodas SELECT vaicājuma

Tabula FirmasF_NUM F_NOS DIB_DAT STAT_KAP TEL ADRFirmas numurs Nosaukums Dibināšanas

datumsStatūtu kapitāls Telefons Adrese

1 AA 1998.12.05 50 000,00 Ls 7222222 Rīga, Garā iela 152 BB 1998.05.07 20 000,00 Ls 7111111 Rīga, Zirņu iela 33 CC 1999.03.05 100 000,00 Ls 7333333 Rīga, Avotu 12

3. Iegūt firmu sarakstu, kuras dibinātas pēc 1998. gada un statūtkapitāls >50 000.

SELECT F_NUM, F_NOS, DIB_DAT, STAT_KAPFROM FirmasWHERE DIB_DAT >#12/31/1998# AND STAT_KAP > 50000;

Firmas numurs Nosaukums Dibināšanas datums Statūtkapitāls3CC 1999.03.05 100 000,00 Ls

4. Iegūt firmu ar lielāko statūtkapitālu.

SELECT TOP 1 F_NOS as NosaukumsFROM FirmasORDER BY STAT_KAP DESC;

NosaukumsCC

10

Page 11: SQL un MDX (Multiple Dimensional eXpression · Web view2014/01/01 · IDE rīks (Integrated Development Environment) SQL SQL Lietojums (lietojumprogramma) SQL valodas SELECT vaicājuma

Tabula Darbinieki

D_NUM UZV VAR AMATS DZIM NUM_FIRDarbinieka

numurs Uzvārds Vārds Amats Dzimums Firmas numurs

1 Koks Juris galdnieks vīrietis 22 Zars Inese krāsotājs sieviete 23 Celms Liene uzkopēja sieviete 14 Koks Liene sekretāre sieviete 15 Zars Varis galdnieks vīrietis 3

5. Noteikt darbinieku vārdus, kuri sākas ar „Va”.

SELECT VAR AS VārdsFROM DarbiniekiWHERE LEFT(VAR,2) =”Va”;

6. Noteikt darbinieku vārdus, kuri beidzas ar „s”;

SELECT VAR AS VārdsFROM DarbiniekiWHERE RIGHT(VAR,1) ="s";

VārdsVaris

VārdsJurisVaris

11

Page 12: SQL un MDX (Multiple Dimensional eXpression · Web view2014/01/01 · IDE rīks (Integrated Development Environment) SQL SQL Lietojums (lietojumprogramma) SQL valodas SELECT vaicājuma

Tabula Darbinieki

D_NUM UZV VAR AMATS DZIM NUM_FIRDarbinieka

numurs Uzvārds Vārds Amats Dzimums Firmas numurs

1 Koks Juris galdnieks vīrietis 22 Zars Inese krāsotājs sieviete 23 Celms Liene uzkopēja sieviete 14 Koks Liene sekretāre sieviete 15 Zars Varis galdnieks vīrietis 3

7. Noteikt darbinieku uzvārdus, kuri sākas ar burtu “K”.

SELECT DISTINCT UZV AS UzvārdsFROM DarbiniekiWHERE UZV Like "K"&"*";

8. Noteikt darbinieku uzvārdus, kuriem otrais burts ir “e”.

SELECT DISTINCT UZV AS UzvārdsFROM DarbiniekiWHERE UZV Like "?"&"e*";

UzvārdsKoks

UzvārdsCelms

12

Page 13: SQL un MDX (Multiple Dimensional eXpression · Web view2014/01/01 · IDE rīks (Integrated Development Environment) SQL SQL Lietojums (lietojumprogramma) SQL valodas SELECT vaicājuma

Tabula Darbinieki

D_NUM UZV VAR AMATS DZIM NUM_FIRDarbinieka

numurs Uzvārds Vārds Amats Dzimums Firmas numurs

1 Koks Juris galdnieks vīrietis 22 Zars Inese krāsotājs sieviete 23 Celms Liene uzkopēja sieviete 14 Koks Liene sekretāre sieviete 15 Zars Varis galdnieks vīrietis 3

Neaizpildītu raksta lauku noteikšana.9. Noteikt darbinieku numurus, kuriem nav ievadīts uzvārds.

SELECT D_NUMFROM DarbiniekiWHERE UZV IS NULL;

Vērtības salīdzināšana ar vērtību kopu.10. Atrast darbiniekus, kuru amati ir vai nu direktors, vai sekretāre.

SELECT UZV, VARFROM DarbiniekiWHERE AMATS IN("direktors", "sekretāre");

13

Page 14: SQL un MDX (Multiple Dimensional eXpression · Web view2014/01/01 · IDE rīks (Integrated Development Environment) SQL SQL Lietojums (lietojumprogramma) SQL valodas SELECT vaicājuma

Rindu (rakstu) grupēšana un grupu vērtību agregātu veidošana

Tabula CCK1 K2 K3 K4 K5 K6

b

1. grupa

2. grupa

selectfrom wheregroup by K6having COUNT(K2) = ... SUM(K4) >= ... MAX(K4) < ... MIN(K4) <> ... AVG(K4) > ...

∑∑

∑∑

14

Page 15: SQL un MDX (Multiple Dimensional eXpression · Web view2014/01/01 · IDE rīks (Integrated Development Environment) SQL SQL Lietojums (lietojumprogramma) SQL valodas SELECT vaicājuma

Tabula Darbinieki

D_NUM UZV VAR AMATS DZIM NUM_FIRDarbinieka

numurs Uzvārds Vārds Amats Dzimums Firmas numurs

1 Koks Juris galdnieks vīrietis 22 Zars Inese krāsotājs sieviete 23 Celms Liene uzkopēja sieviete 14 Koks Liene sekretāre sieviete 15 Zars Varis galdnieks vīrietis 3

11. Cik sievietes un cik vīrieši ir darbinieku sarakstā?

SELECT COUNT(A.D_NUM) as Daudzums, A.DZIM AS DzimumsFROM Darbinieki AGROUP BY A.DZIM;

12. Cik galdnieku ir darbinieku sarakstā?

SELECT COUNT(A.D_NUM) as Daudzums, A.AMATS as AmatsFROM Darbinieki AWHERE A.AMATS = "galdnieks"GROUP BY A.AMATS;

Daudzums Dzimums3 sieviete2 vīrietis

Daudzums Amats2galdnieks

15

Page 16: SQL un MDX (Multiple Dimensional eXpression · Web view2014/01/01 · IDE rīks (Integrated Development Environment) SQL SQL Lietojums (lietojumprogramma) SQL valodas SELECT vaicājuma

Tabula Darbinieki

D_NUM UZV VAR AMATS DZIM NUM_FIRDarbinieka

numurs Uzvārds Vārds Amats Dzimums Firmas numurs

1 Koks Juris galdnieks vīrietis 22 Zars Inese krāsotājs sieviete 23 Celms Liene uzkopēja sieviete 14 Koks Liene sekretāre sieviete 15 Zars Varis galdnieks vīrietis 3

13. Cik ir darbinieces – sievietes?Vispirms izpildās WHERE noteikumi, tad notiek grupēšana. Visai tabulai kā rakstu grupai grupēšanu var nenorādīt. Divi ekvivalenti vaicājumi.

a) SELECT COUNT(A.D_NUM) as SkaitsFROM Darbinieki A WHERE A.DZIM = "sieviete" GROUP BY A.DZIM;

b) SELECT COUNT(A.D_NUM) as Skaits FROM Darbinieki A WHERE A.DZIM = "sieviete";

16

Page 17: SQL un MDX (Multiple Dimensional eXpression · Web view2014/01/01 · IDE rīks (Integrated Development Environment) SQL SQL Lietojums (lietojumprogramma) SQL valodas SELECT vaicājuma

Tabula Darbi

NUM NOS IZP_DAT STUNDAS ST_CENA DARBIN_NUMDarba

numurs Nosaukums Izpildes datums Stundas Stundas

cenaDarbinieka

numurs1 darbs1 1999.03.03. 5 2,00 Ls 12 darbs2 1999.05.03. 10 1,50 Ls 13 darbs3 1999.07.03. 12 2,00 Ls 14 darbs4 1999.01.03. 11 2,00 Ls 25 darbs5 1999.03.03. 8 1,80 Ls 26 darbs6 1999.05.03. 10 2,50 Ls 37 darbs7 1999.02.03. 14 2,20 Ls 38 darbs8 1999.05.03. 10 4,00 Ls 4

14. Iegūt darbu, kura izpildei izmantotas visvairāk stundas.

SELECT MAX(A.STUNDAS) AS Darbs_ar_maksimālo_stundu_skaituFROM Darbi A;

15. Iegūt katrā mēnesī kopā nostrādātās stundas.

SELECT SUM(STUNDAS) AS Kopā_nostrādātas_stundas, DatePart("m",IZP_DAT) AS MēnesisFROM DarbiGROUP BY DatePart("m",IZP_DAT);

Darbs_ar_maksimālo_stundu_skaitu14

Kopā_nostrādātas_stundas Mēnesis11 114 213 330 512 7

17

Page 18: SQL un MDX (Multiple Dimensional eXpression · Web view2014/01/01 · IDE rīks (Integrated Development Environment) SQL SQL Lietojums (lietojumprogramma) SQL valodas SELECT vaicājuma

Tabula Darbi

NUM NOS IZP_DAT STUNDAS ST_CENA DARBIN_NUMDarba

numurs Nosaukums Izpildes datums Stundas Stundas

cenaDarbinieka

numurs1 darbs1 1999.03.03. 5 2,00 Ls 12 darbs2 1999.05.03. 10 1,50 Ls 13 darbs3 1999.07.03. 12 2,00 Ls 14 darbs4 1999.01.03. 11 2,00 Ls 25 darbs5 1999.03.03. 8 1,80 Ls 26 darbs6 1999.05.03. 10 2,50 Ls 37 darbs7 1999.02.03. 14 2,20 Ls 38 darbs8 1999.05.03. 10 4,00 Ls 4

16. Kurš darbinieks izpilda visvairāk darbu?

SELECT TOP 1 COUNT(NOS) as Skaits, DARBIN_NUMFROM DarbiGROUP by DARBIN_NUMORDER by COUNT(NOS) DESC;

18