Professional Documents
Culture Documents
Rezultatul oricrei fraze SELECT este o nou relaie (tabel). n lipsa opiunii GROUP
BY, dac n clauza SELECT este prezent o funcie predefinit, tabela rezultat va conine o
singur linie.
Funcia COUNT contorizeaz valorile unei coloane, altfel spus, numr, ntr-o relaie,
cte valori diferite de NULL are coloana specificat.
Exemplu 1
n funcia COUNT se poate utiliza ca argument, n locul numelui unei coloane, semnul *;
n acest caz se va determina cte linii are tabela la care se aplic funcia respectiv.
Exemplu 2
Exemplu 4
FROM tabel
GROUP BY coloan-de-regrupare
Exemplu 1
2. Se formeaz cte un grup pentru fiecare valoare distinct a atributului Data - vezi figura
6.20.
3. Pentru fiecare din cele nou grupuri se calculeaz suma valorilor atributului
ValoareTotala. Tabela rezultat va avea nou linii, ca n figura 6.21.
Exemplu 2
ON FACTURIEMISE.CodClient = CLIENTI.CodClient
GROUP BY FACTURIEMISE.CodClient
Clauza HAVING permite introducerea unor restricii care sunt aplicate grupurilor de
tupluri, deci nu tuplurilor "individuale", aa cum "face" clauza WHERE. Din tabela rezultat sunt
eliminate toate grupurile care nu satisfac condiia specificat.
Clauza HAVING "lucreaz" mpreun cu o clauz GROUP BY, fiind practic o clauz
WHERE aplicat acesteia.
Formatul general este:
SELECT coloan 1, coloan 2, .... , coloan m
FROM tabel
GROUP BY coloan-de-regrupare
HAVING caracteristic-de-grup
Exemplu 3
Pentru facturile emise intereseaz valoarea zilnic a acestora (n funcie de data la care
au fost ntocmite, dar numai dac aceasta (valoarea zilnic) este de mai mare de cinci
milioane lei.
SELECT Data, SUM(ValoareTotala)
FROM FACTURIEMISE
GROUP BY Data
HAVING SUM(ValoareTotala) > 15000000
La execuia acestei fraze, se parcurg cei trei pai prezentai la exemplul 1, apoi, din cele nou
tupluri obinute prin grupare, sunt extrase numai cele care ndeplinesc condiia
SUM(ValoareTotala)>15000000. Rezultatul final este cel din figura 6.22.
Exemplu 4
GROUP BY Data)
Din pcate, nici acest tip de interogare (prezena subconsultrilor n clauza HAVING) nu
este agreat de Visual FoxPro, astfel nct este necesar utilizarea mai multor fraze SELECT i