Explorați Cărți electronice
Categorii
Explorați Cărți audio
Categorii
Explorați Reviste
Categorii
Explorați Documente
Categorii
ContractCredit
NrContractCredit 1 SumaAcordata 7.000,00 CodTipCredit 1
2
3 4 5 6
12.000,00
9.000,00 20.000,00 13.400,00 10.000,00
2
1 2 3 3
3
4
MOTOR
PRACTIC
2
2
2
2 3 3
Divers BCR
Divers BCR MOTOR MOTOR
1
1 2 2
2
4 5 6
12.000,00
20.000,00 13.400,00 10.000,00
2
2 3 3
Cererea SQL prin care se realizeaz compunerea datelor din cele dou tabele este: SELECT * FROM TipCredit INNER JOIN ContractCredit ON TipCredit.CodTipCredit=ContractCredit.CodTipCredit nregistrrile din tabelul rezultat se obin prin combinarea fiecrei nregistrri din TipCredit cu fiecare nregistrare din ContractCredit care are acelai CodTipCredit
ContractCredit
NrContractCredit 1 SumaAcordata 7.000,00 CodTipCredit 1
2
3 4
12.000,00
9.000,00 20.000,00
2
1 2
3
4
MOTOR
PRACTIC
2
2
LEFT JOIN INTRE TipCredit si ContractCredit sau RIGHT JOIN NTRE ContractCredit i TipCredit
TipCredit.CodTipCredit 1 1 TipCredit Divers Extra BCR Divers Extra BCR CodMoneda 1 1 NrContractCredit 1 3 SumaAcordata 7.000,00 9.000,00 ContractCredit.CodTipCredit 1 1
2
2 3 4
Divers BCR
Divers BCR MOTOR PRACTIC
1
1 2 2
2
4
12.000,00
20.000,00
2
2
Cererea SQL prin care se realizeaz compunerea datelor din cele dou tabele este: SELECT * FROM TipCredit LEFT JOIN ContractCredit ON TipCredit.CodTipCredit=ContractCredit.CodTipCredit nregistrrile din tabelul rezultat se obin prin combinarea fiecrei nregistrri din TipCredit cu fiecare nregistrare din ContractCredit care are acelai CodTipCredit. n plus n tabelul rezultat apar i nregistrrile din tabelul din plasat n stnga (TipCredit LEFT JOIN ContractCredit) care nu au o nregistrare corespondent n dreapta. Acelai rezultat se obine cu ContractCredit RIGHT JOIN TipCredit.
ContractCredit
NrContractCredit 1 SumaAcordata 7.000,00 CodTipCredit 1
2
3 4 5 6
12.000,00
9.000,00 20.000,00 13.400,00 10.000,00
2
1 2 3 3
3
4
MOTOR
PRACTIC
2
2
2
2 3 3
Divers BCR
Divers BCR MOTOR MOTOR
1
1 2 2
2
4 5 6
12.000,00
20.000,00 13.400,00 10.000,00
2
2 3 3
Cererea SQL prin care se realizeaz compunerea datelor din cele dou tabele este: SELECT * FROM TipCredit, ContractCredit WHERE TipCredit.CodTipCredit=ContractCredit.CodTipCredit nirarea tabelelor dup clauza FROM separate prin virgul are ca efect obinerea produsului cartezian dintre cele dou tabele (practic se obine un tabel n care fiecare nregistrare din tabelul TipCredit se combin cu fiecare nregistrare din tabelul ContractCredit- 6*4=24 nregistrri). Ulterior prin clauza WHERE se rein doar nregistrrile n care valorile de pe cmpurile CodTipCredit coincid
Query1
TipCredit.Cod TipCredit 1 2 1 2 3 3 TipCredit Divers Extra BCR Divers BCR Divers Extra BCR Divers BCR MOTOR MOTOR TipCredit.Cod Moneda 1 1 1 1 2 2 NrContractCre dit 1 2 3 4 5 6 SumaAcordata 7.000,00 12.000,00 9.000,00 20.000,00 13.400,00 10.000,00 ContractCredit .CodTipCredit 1 2 1 2 3 3 Moneda.CodM oneda 1 1 1 1 2 2 Moneda RON RON RON RON EURO EURO
Alias-un nume ce poate fi atribuit unui tabel sau unei coloane Exemplu utilizare aliasuri pentru coloane
SELECT Clienti.CNP as [Cod Numeric Personal], Mid(CNP,2,2) as [Anul nasterii] FROM Clienti
2.8 Utilizarea funciilor agregat pentru centralizarea datelor fr a recurge la grupri Exemplu: S se determine numrul de contracte ncheiate n RON i valoarea total a acestora
SELECT count(*) as [Numar de contracte], SUM(SumaAcordata) as [Valoare totala] FROM (TipCredit INNER JOIN ContractCredit ON TipCredit.CodTipCredit=ContractCredit.CodTipCredit) INNER JOIN Moneda ON Moneda.CodMoneda=TipCredit.CodMoneda WHERE Moneda =RON Mod de funcionare: Clauza FROM compune datele din cele trei tabele, rezultatul fiind tabelul Query1 de mai jos. Clauza WHERE filtreaz liniile tabelului Query1 reinndu-le doar pe cele pe care moneda este RON Count(*) numr liniile rezultate n urma filtrrii (un contract pe linie) SUM(SumaAcordata) returneaz totalul pe coloana SumaAcordat doar pentru liniile rezultate n urma filtrrii
Query1 TipCredit.CodTip Credit 1 2 1 2 3 3 TipCredit Divers Extra BCR Divers BCR Divers Extra BCR Divers BCR MOTOR MOTOR TipCredit.CodMo neda 1 1 1 1 2 2 NrContractCredit 1 2 3 4 5 6 SumaAcordata 7.000,00 12.000,00 9.000,00 20.000,00 13.400,00 10.000,00 ContractCredit.Co dTipCredit 1 2 1 2 3 3 Moneda.CodMone da 1 1 1 1 2 2 Moneda RON RON RON RON EURO EURO
2.9 Utilizarea funciilor agregat pentru centralizarea datelor cu grupri Exemplu: S se determine numrul de contracte i valoarea total a acestora pe fiecare tip de credit. Se vor lua n calcul numai contractele n RON i se vor afia doar acele tipuri de credit pentru care s-au ncheiat cel puin dou contracte i valoarea medie a contractelor ncheiate este mai mare de 10.000 RON. Rezultatele vor fi ordonate descresctor dup valoarea total a contractelor ncheiate.
SELECT TipCredit, COUNT(*) as [Numar de contracte], SUM(SumaAcordata) as [Valoare totala] FROM (TipCredit INNER JOIN ContractCredit ON TipCredit.CodTipCredit=ContractCredit.CodTipCredit) INNER JOIN Moneda ON Moneda.CodMoneda=TipCredit.CodMoneda WHERE Moneda =RON GROUP BY TipCredit.CodTipCredit, TipCredit HAVING COUNT(*)>=2 AND AVG(SumaAcordata)>10000 ORDER BY SUM(SumaAcordata) DESC
Query1 TipCredit.CodTip Credit 1 2 1 2 3 3 TipCredit Divers Extra BCR Divers BCR Divers Extra BCR Divers BCR MOTOR MOTOR TipCredit.CodMo neda 1 1 1 1 2 2 NrContractCredit 1 2 3 4 5 6 SumaAcordata 7.000,00 12.000,00 9.000,00 20.000,00 13.400,00 10.000,00 ContractCredit.Co dTipCredit 1 2 1 2 3 3 Moneda.CodMone da 1 1 1 1 2 2 Moneda RON RON RON RON EURO EURO
1 RON
2 Divers BCR
1 Divers Extra BCR 1 Divers Extra BCR
1
1 1
4
1 3
20.000,00
7.000,00 9.000,00
2
1 1
1 RON
1 RON 1 RON
Query1 dup GROUP BY TipCredit Divers Extra BCR Divers BCR Numar de contracte 2 2 Valoare totala 16.000,00 lei 32.000,00 lei Valoare medie 8.000,00 lei 16.000,00 lei
Query1 dup GROUP BY TipCredit Divers Extra BCR Divers BCR Numar de contracte 2 2 Valoare totala 16.000,00 lei 32.000,00 lei Valoare medie 8.000,00 lei 16.000,00 lei
2.10 Subinterogri
O subinterogare reprezint un bloc de cerere plasat n cadrul unei alte fraze SQL care valorific sub forma unor argumente rezultatul produs de subinterogare. Un exemplu de cerere SQL care implic o subinterogare este urmtorul:
S se determine numrul de contracte i valoarea total a acestora pe fiecare tip de credit. Se vor lua n calcul numai contractele n RON i se vor afia doar acele tipuri de credit la care valoarea medie a contractelor ncheiate este mai mare dect valoarea medie a contractelor ncheiate n RON n anul curent.
Partea scris difereniat n cerina de mai sus impune utilizarea unei subinterogri.