Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
CIG. Baze de date curs tema 5 partea 2.pdf
1. Prof. univ. dr. Alexandru Manole
amanole@artifex.org.ro
SUPORT PENTRU ACTIVITATI DE CURS
ȘI LABORATOR
2. TEMA 5.
Cereri de interogare
5.1. Fereastra QBE – prezentare generală.
5.2. Reprezentarea atributelor. Atribute preluate și
atribute calculate. Formule și funcții (simple și de grup).
5.3. Sortarea datelor.
5.4. Criterii de selecție. Parametri
5.5. Interogări de acțiune.
5.6. Interogări de analiză încrucișată
3. Cereri de interogare
5.2. Reprezentarea atributelor - atribute calculate. Formule și
funcții (simple și de grup).
Pentru calcule, respectiv obținerea de valori prin prelucrare, este necesar ca acestea să fie
asociate cu atribute, la fel ca datele/atributele din modelul fizic inițial.
Ne reamintim notația pentru un atribut calculat se înscrie în linia Field:
Nume_atribut : Procedura de calcul
Procedura de calcul poate fi o formulă de calcul sau o funcție.
Formulele și funcțiile se pot combina între ele, astfel încât o formulă să fie parte a unei
funcții, iar o funcție parte a unei formule.
Vom aborda mai întâi formulele de calcul. Într-o formulă se pot utiliza:
Operații aritmetice (adunare, scădere, înmulțire, împărțire, împărțirea fără rest, modul,
ridicarea la putere);
Valori ale atributelor (în acest caz, în formulă apare denumirea atributului);
Valori concrete, care rămân constante pentru toate prelucrările prin formulele
respective.
De exemplu, calculul valorii denominate corespunzătoare datelor din baza de date
utilizată în exemplele anterioare presupune înscrierea formulei din figura următoare în
prima căsuță Field liberă din grila de proiectare:
4. Cereri de interogare
Efectul formulei este următorul: pentru fiecare înregistrare, se va împărți valoarea
atributului SumaC la 10000. Toate rezultatele vor fi stocate într-un nou atribut,
DenominareC, care face parte din rezultatul interogării, prezentat, în extras, mai jos:
Se observă că valoarea denominată nu este afișată în format Currency, ceea ce impune
definirea explicită a acestei proprietăți.
5. Cereri de interogare
Prin comanda Properties din meniul contextual al atributului (în cadrul grilei de
proiectare), se afișează caseta de proprietăți:
Aceste proprietăți sunt similare celor de la definirea atributelor în cadrul tabelelor, dar, așa
cum se poate observa, nu toate proprietățile sunt disponibile aici.
Din lista Format, dacă se alege opțiunea Currency, rezultatul interogării este afișat astfel:
6. Cereri de interogare
O altă operație, dedicată șirurilor de caractere, este concatenarea: șirurile concatenate sunt
unite într-un singur șir, în ordinea în care apar în formula operatorului (operatorul de
concatenare este &).
Exemplu: se poate explicita simbolul contului într-un nou atribut, prin adăugarea, înainte
de simbol, a cuvântului „Contul” urmat de un spațiu, pentru ușurința lecturii.
Contul: "Contul" & " " & [Simbol]
Rezultatul aplicării operatorului (ultima coloană):
7. Cereri de interogare
Vom vorbi în continuare despre funcțiile aplicabile în interogări.
Funcțiile pot fi simple sau agregate (de grup).
Considerând notația funcției ca:
Rezultat : Funcție (Argument)
Pentru o funcție simplă, argumentul (datele de intrare) este reprezentat de o singură valoare.
Pentru o funcție agregată, denumită și de grup, argumentul (datele de intrare) este reprezentat
de o mulțime de valori (se poate spune și grup de valori, de unde și denumirea de grup).
Pentru ambele tipuri de funcții, rezultatul este reprezentat de o singură valoare.
Vom prezenta câteva funcții simple.
Una dintre cele mai utile funcții este funcția de test condițional IIf. Structura funcției este:
Rezultat: IIf(condiție, Valoare_A, Valoare_F)
Rezultat: denumirea atributului care va stoca rezultatele funcției;
Condiție: o expresie logică (poate fi adevărată sau falsă);
Valoare_A: rezultatul funcției (o singură valoare) în cazul în care condiție este adevărată;
Valoare_F: rezultatul funcției (o singură valoare) în cazul în care condiție este falsă.
8. Cereri de interogare
Pentru exemplificare, vom testa sumele creditoare denominate:
Fiecare valoare mai mică decât 500 va fi considerată valoare redusă;
Fiecare valoare mai mare sau cel puțin egală cu 500 va fi considerată valoare OK.
Funcția IIf va avea următoarea structură (fereastra Expression Builder din meniul
contextual al grilei de proiectare):
10. Cereri de interogare
În situația în care trebuie evaluate mai mult de două cazuri posibile, este necesară aplicarea funcției
în varianta imbricată (funcție în funcție), respectiv o funcție devine parametru al altei funcții.
Numărul de funcții imbricate este egal cu numărul de cazuri posibile minus unu.
3 cazuri posibile: 3-1 (2) funcții imbricate.
Dezvoltând exemplul anterior, vom evalua valoarea denominată astfel:
Fiecare valoare mai mică decât 500 va fi considerată valoare redusă;
Fiecare valoare mai mare sau cel puțin egală cu 500, dar mai mică decât 1000 va fi considerată
valoare medie.
Fiecare valoare mai mare sau cel puțin egală cu 1000 va fi considerată valoare mare.
Se aplică funcția:
Evaluare_2: IIf([DenominareC]<500;"Valoare redusa";IIf([DenominareC]<1000;"Valoare
medie";"Valoare OK"))
Observăm că ultima funcție tratează două cazuri, de aici corelația descrisă mai sus (minus unu).
Numărul parantezelor de închidere este egal cu numărul funcțiilor imbricate.
Rezultatul interogării este reprezentat în continuare.
Imbricarea funcționează și pentru funcții diferite.
12. Cereri de interogare
O altă funcție utilă este IsNull. Această funcție logică verifică valorile nule și produce
rezultatul Adevărat (reprezentat implicit prin valoarea -1) pentru o valoare nulă și Fals
(reprezentat implicit prin valoarea 0) pentru o valoare non-nulă.
Interogarea de mai jos produce și valori nule (pot exista conturi care nu au înregistrat rulad
creditor în decursul unei perioade):
13. Cereri de interogare
Interogarea afișează date despre toate conturile (preluate din tabelul CONTURI) și, pentru
atributele din tabelul secundar, numai valorile disponibile.
Valorile indisponibile sunt afișate ca valori NULL.
14. Cereri de interogare
Vom testa valorile nule ale atributului SumaC prin expresia:
Evaluare_3: IsNull([SumaC])
Rezultatul interogării (s-a definit formatul Yes/No pentru noul atribut):
15. Cereri de interogare
Vom înlocui valorile nule ale atributului SumaC prin expresia:
Evaluare_4: IIf(IsNull([SumaC]);0;[SumaC])
Rezultatul interogării:
16. Cereri de interogare
Deși cheia externă poate primi valori NULL (acestea nu încalcă integritatea
referențială: NULL nu este o valoare), acest lucru nu este permis în utilizarea normală
a bazei de date), ci numai în mediu de testare, didactic, exemplificare etc.
Un astfel de exemplu – didactic – vizează pregătirea datelor din baza de date pentru
îndeplinirea celei de-a treia funcțiuni a sa: Business Intelligence – Data Mining.
Apariția acestei erori poate fi justificată prin preluarea datelor din surse non-baze de
date.
Expresia anterioară este un exemplu de utilizare a funcțiilor imbricate: s-au utilizat
concomitent funcțiile IIf și IsNull.
Funcția păstrează valorile non-nule, dar înlocuiește valorile nule cu valori 0.
Funcția Len „măsoară” lungimea unui șir de caractere și returnează numărul de caractere
din șir.
Exemplu:
Lungime: Len([Evaluare_4])
Rezultatul este prezentat în slide-ul următor.
18. Cereri de interogare
Funcția Left(atribut,i) „extrage” un număr de i caractere din valoarea atributului atribut,
începând de la stânga. Parametrul i reprezintă un număr natural.
Exemplu, funcția:
Stanga: Left([SimbolC];3)
extrage primele trei caractere de la stânga din valoarea atributului SimbolC:
- pentru valorile nule, rezultatele sunt tot valori nule. Nu toate conturile au sume creditoare.
19. Cereri de interogare
Funcția Right(atribut,i) „extrage” un număr de i caractere din valoarea atributului atribut,
începând de la dreapta. Parametrul i reprezintă un număr natural.
Exemplu, funcția:
Dreapta: Right([SimbolC];2)
extrage primele două caractere de la dreapta din valoarea atributului SimbolC
- pentru valorile nule, rezultatele sunt tot valori nule. Nu toate conturile au sume creditoare.
20. Cereri de interogare
Funcția Date() returnează data sistemului.
Se pot face operațiuni cu intervale de timp, măsurate în zile, unde lungimea unui interval
este reprezentată prin numărul de zile din cadrul acestuia.
Formula
Zile: Date()-[DataOp]
calculează numărul de zile scurse de la data fiecărei operații.
21. Cereri de interogare
Formula
Data_viitoare:DataOp+30
calculează data zilei din calendar, peste 30 de zile calendaristice.
Formula
Data_istoric: DataOp-30
calculează data în urmă cu 30 de zile calendaristice.
22. Cereri de interogare
Funcții agregate
Pentru o funcție agregată, denumită și de grup, argumentul (datele de intrare) este
reprezentat de o mulțime de valori (se poate spune și grup de valori, de unde și denumirea
de grup). Rezultatul este reprezentat de o singură valoare.
Acestea se pot aplica în două variante:
Fără grupare;
Cu grupare.
Prima variantă presupune definirea funcției de grup dorite pentru un anumit atribut și se
aplică la toate valorile atributului.
A doua variantă se aplică pentru submulțimi de valori ale atributului, determinate prin
grupare.
Funcțiile de grup sunt descrise în lista de mai jos:
23. Cereri de interogare
Sum: calculează suma unui grup de valori numerice.
Avg: calculează media aritmetică.
Min: extrage valoarea minimă.
Max: valoarea maximă.
Count: numără valorile dintr-un grup.
StDev: deviația standard (indicator statistic) pentru valorile din grup.
Var: varianța (indicator statistic) pentru valorile din grup.
First: returnează valoarea din prima înregistrare.
Last: returnează valoarea din ultima înregistrare.
Opțiunea pentru activarea funcțiilor de grup este butonul Totals de
pe bara de instrumente, secțiunea Show/Hide.
24. Cereri de interogare
În grila de proiectare se afișează linia Total.
Opțiunile de pe linia Total sunt prezentate sub forma unei liste predefinite,
care include funcțiile agregate, alături de opțiunile cu rol special,
prezentate în continuare.
Group By: permite aplicarea de funcții agregate cu grupare.
Expression: permite definirea unei expresii.
Where: permite definirea unui criteriu în interogare.
Aplicarea funcției Sum în interogarea următoare, la atributul SumaC:
25. Cereri de interogare
Permite determinarea rulajului creditor pentru toate conturile.
Denumirea atributului rezultat, SumOfSumac, este definită implicit de baza
de date.
Putem defini propria noastră denumire, înscriind-o înainte de atributul
argument al funcției (SumaC), și plasând semnul : între cele două
denumiri. Ca orice relație de acest tip, va fi definită în linia Field:
26. Cereri de interogare
Rezultatul:
Celelalte funcții agregate se aplică într-o manieră similară.
Gruparea presupune existența următoarei corelații între valorile a două atribute A și B:
Unei valori a atributului A îi pot corespunde mai multe valori ale atributului B
În acest caz, spunem că valorile B se pot grupa după valorile A și că A poate fi
considerat atribut de grupare pentru B.
Gruparea poate fi unidirecțională sau bidirecțională, reciprocă.
Grupare unidirecțională:
Unei clase îi pot corespunde mai multe simboluri de cont, dar
Un simbol de cont corespunde unei singure clase.
Grupare bidirecțională:
Unui simbol de cont îi pot corespunde mai multe operații, dar totodată
Unei operații îi pot corespunde mai multe simboluri de cont.
27. Cereri de interogare
Utilizarea grupării presupune, alături de definirea funcției de grup, definirea atributului
de grupare, cu proprietatea Group By.
Vom aplica funcția care ne calculează rulajul creditor pe fiecare cont. Structura
interogării (stânga) și rezultatul (dreapta):
28. Cereri de interogare
Gruparea are astfel, indiferent de funcția aplicată, semnificație de subtotal după
atributul de grupare.
Se poate realiza grupare după mai multe atribute de grupare. Ordinea în care acestea
sunt plasate în grila de proiectare, de la stânga la dreapta, determină ordinea în care vor
fi efectuate grupările.
Putem calcula, pe fiecare clasă, rulajele totale pe fiecare operație.
Structura interogării:
30. Cereri de interogare
Practic, în ultima interogare, valorile sunt detaliate pe fiecare clasă și operație.
Operațiunea de detaliere (care oferă mai multe rezultate) se mai numește și drilldown.
Restrângerea (care oferă mai puține rezultate – gruparea numai după clasă) se mai
numește și rollup.
Atributele care intervin în grupare pot fi preluate din surse diferite.