CATEGORII DOCUMENTE |
Clauza HAVING
Cea mai simpla definitie ar fi: clauza HAVING este WHERE-ul ce opereaza la nivel de grupuri. Daca WHERE actioneaza la nivel de tuplu, selectand acele linii care indeplinesc o conditie specificata, HAVING permite specificarea unor conditii de selectie ce se aplica grupurilor de linii create prin clauza GROUP BY
Din rezultat sunt eliminate toate grupurile care nu satisfac conditia specificata. Formatul general este:
SELECT coloana 1, coloana 2, , coloana n
FROM lista_tabele
GROUP BY coloana_de_regrupare
HAVING criteriu_de_regrupare
Care sunt zilele in care s-au ridicat cel putin 2 burse?
SELECT data_incasarii, COUNT (*) AS Nr_burse
FROM BURSA
GROUP BY data_incasarii
HAVING COUNT (*) > = 2
data_incasarii |
nr_burse |
16-Feb-04 | |
18-Feb-04 |
Figura 4.69. Zilele in care s-au ridicat cel putin doua burse
Care sunt cartile pentru care s-au cheltuit peste 10.000.000 lei?
SELECT titlu, SUM (pret_unitar*nr_exemplare) AS Suma_cheltuita
FROM CARTE
GROUP BY titlu
HAVING SUM (pret_unitar*nr_exemplare) > 10000000
titlu |
suma_cheltuita |
Bazele contabilitatii | |
Conception orientee objets | |
Contabilitate de gestiune | |
Contabilitate generala | |
Economie Politica | |
Informatica de gestiune | |
Teoria generala a dreptului |
Figura 4.70. Cartile pentru care s-au cheltuit peste 10.000.000 lei
Sinteza
Acest capitol a avut ca obiectiv prezentarea detaliata a celui mai puternic limbaj structurat pentru interogarea bazelor de date relationale. Dupa ce in primul subcapitol am realizat prezentarea generala a limbajului in subcapitolul urmator am trecut la descrierea elementelor de baza ale interogarilor SQL (SELECT FROM WHERE). Tot aici am realizat (pentru o mai buna intelegere a limbajului) si o paralela intre clauzele principale ale frazei SELECT cu operatorii algebrei relationale prezentati in capitolul 3.
Toate elementele prezentate pe parcursul acestui capitol (optiunea ORDER BY, operatorii LIKE, BETWEEN, IN, theta si echijonctiunea, sinonime locale si jonctiunea unei tabele cu ea insasi, subconsultari, functii agregat, gruparea tuplurilor) pentru fundamentare au fost asociate cu o serie de exemple practice (pentru toate aceste exemple, s-au folosit tabelele din ANEXA) atat in standardul SQL-92 cat si in Visual FoxPro.
Studiu de caz
Se considera urmatoarea baza de date:
PACIENT (codpacient, nume, prenume, datanasterii, localitate)
PROGRAMARE (nrprogramare, dataprogramare, oraprogramare, codpacient)
CONSULTATIE (nrconsultatie, tipconsultatie, codpacient, dataconsultatie)
MEDICI (codmedic, numemedic, prenumemedic)
MEDIC_CONSULTATIE (nrconsultatie, codmedic)
TARIFE (tipconsultatie, tarif)
Folosind comenzi SQL sa se determine:
Care sunt pacientii din Targoviste;
Care sunt pacientii din Targoviste si Titu;
Care pacienti nu sunt din Targoviste si Titu;
Care sunt pacientii care s-au nascut in anul 1989;
Care sunt tarifele mai mari de 25 RON;
Din ce localitati sunt pacientii din baza;
Care este nume si prenumele medicilor care ofera consultatii;
Care sunt tarifele practicate;
Din ce localitate sunt pacientii nascuti in luna ianuarie 1990;
Care sunt orele pentru care sunt prevazute consultatii in data de 09.02.2006;
Cum se numesc pacientii din Targoviste si Moreni;
Care este prenumele medicilor cu numele de familie Ghionea;
La ce data si la ce ora are programare Popa Georgeta;
Care sunt datele la care au facut programare pacientii din Targoviste;
Numele pacientilor care au fost consultati in luna februarie 2006;
Data la care a facut programare Dinescu Mircea si Vancea Ioan;
Numele medicilor care au acordat consultatii in data de 23.02.2006;
De ce medic a fost consultata Popa Georgeta;
Numele pacientilor consultati de Grecu Anca;
Nume pacientilor care au facut programare si in luna ianuarie si in luna februarie 2006;
Care este tariful consultatiei pacientului Popa Georgeta;
Numele pacientilor care au facut programare in data de 10.02.2006 in intervalul 14-16;
Datele la care au efectuat consultatii Grecu Anca si Minea Ion in luna februarie 2006;
Numele si prenumele medicilor care au consultat pacienti din Targoviste si Moreni dar nu din Titu;
Nume pacientilor care au avut programare in data de 10.20.2006 in intervalul 12-14 si au fost consultati de catre Grecu Anca.
Numele si prenumele in ordine alfabetica al pacientilor pe localitati;
Numele si prenumele pacientilor pe zile de programare;
Numele si prenumele pacientilor pe zile de consultatie;
Cate consultatii a acordat Grecu Anca in luna februarie 2006;
Cat a primit Grecu Anca in luna februarie 2006 pentru consultatiile acordate, stiut fiind faptul ca fiecare medic primeste un onorariu de 10 RON pentru fiecare consultatie acordata;
Cate programari a facut pacientul Popa Georgeta;
Politica de confidentialitate | Termeni si conditii de utilizare |
Vizualizari: 1774
Importanta:
Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved