background image

Funkcje agregujące i grupujące w SQL. 

Pracując z bazami danych często pojawiają się potrzeby by policzyć np przychód, ilość 
sprzedanego towaru, średnią kwotę zadłużenia itd. T-SQL posiada wiele funkcji 
pozwalających na w/w działania na początek omówię funkcje COUNT  
Tabela 4.  

miesiac  koszty 
styczeń  30 zł 
styczeń  30 zł 
luty 

450 zł 

marzec   50 zł 
kwiecień 600 zł 

Użycie funkcji COUNT w MSSQL 

?

 








SELECT

 

count(koszty),

 

miesiac

 

FROM

 

t_dane

 

group

 

by

 

miesiac

 

  

go

 

 
Jeśli tabela 4. to nasz baza danych, a użyjemy powyższego zapytania to wynikiem będzie:  

styczeń 

luty 

marzec  

kwiecień 

Funkcja COUNT liczy wystąpienia bazie danych w tym przypadku dla stycznia koszty 
wystąpiły dwa razy dla pozostałych miesięcy tylko raz, w klauzuli group by wskazujemy 
poczym mają być grupowane dane. Jeśli użyli byśmy w powyższym zapytaniu zaraz za 
SELECT DISTINCT wynik byłby dla stycznia 1 ponieważ DISTINCT nakazuje eliminacje 
identycznych rekordów.  

?

 






SELECT

 

DISTINCT

 

count(koszty),

 

miesiac

 

FROM

 

t_dane

 

group

 

by

 

miesiac

 

 
Możemy również użyć COUNT(slect distinct koszty) ma takie samo działanie jak poprzednie 
zapytanie jednak tu eliminowane są duplikaty tylko w jednej kolumnie koszty.  

Użycie funkcji SUM i AVG w MS SQL 

background image

?

 






SELECT

 

sum(koszty),

 

miesiac

 

FROM

 

t_dane

 

group

 

by

 

miesiac

 

 
Funkcja SUM pozwala na sumowanie kosztów dla poszczególnych miesięcy, wynikiem tego 
zapytania będzie 60 zł dla stycznia.  

?

 






SELECT

 

AVG(koszty),

 

miesiac

 

FROM

 

t_dane

 

group

 

by

 

miesiac

 

 
Funkcja AVG pozwala obliczyć średni koszt dla poszczególnych miesięcy  
Rozbuduje trochę naszą tabele 4.  

miesiac koszty 
styczeń 10 zł 
styczeń 30 zł 
styczeń 450 zł 
luty  

50 zł 

luty 

600 zł 

 

Użcie funkcji MAX i MIN w MS SQL 

?

 







SELECT

 

max(koszty) as

 

max,

 

min(koszty) as

 

min,

 

miesiac 

 

FROM

 

t_dane

 

group

 

by

 

miesiac

 

 
Funkcja max i min pozwala na wybranie maksymalnych i minimalnych wartości naszych 
danych pogrupowanych po miesiącach, użyłem tu polecenia AS, pozwala ono na nazwanie 
kolumny w wyświetlanym wyniku  
Wynik w/w zapytania t-sql działania funkcji max, min  

miesiac max min 

styczeń 

450 
zł 

10 zł 

luty  

600  50 zł 

 

background image

Użycie kaluzuli HAVING w MS SQL 

HAVING Pozwala określić, które ze zgrupowanych rekoródów przez GROUP BY mają być 
wyświetlone przykład:  

?

 




SELECT

 

miesiac, SUM(koszty)

 

FROM

 

t_dane

 

GROUP

 

BY

 

miesiac

 

HAVING

 

SUM(koszty) > 1000

 

 
W tym przykładzie za pomocą HAVING w t-sql wykluczamy miesiące w których suma 
kosztów była niższa niż 100, możemy użyć również innych funkcji agregujących w celu 
wykluczenia lub wybrania rekordó

(spr. funkcje t-sql)

  

 

select

 

OrderID

,

 

CustomerID

,

 

DateDiff

 

(

dd

,

 

ShippedDate

,

 

RequiredDate

)

 

'ilosc dni'

 

From

 

Orders

 

 
 

Lub  
 

select

 

OrderID

,

 

CustomerID

,

 

CAST

 

(

RequiredDate

-

ShippedDate

 

AS

 

INT

)

 

'ilosc dni'

 

From

 

Orders

 

 
 

SELECT

 

distinct

 

Cast

 

(

productname

 

as

 

nvarchar 

(

1

))

 

as

 

'litera'

,

 

Count

(

'litera'

)

 

FROM

 

Products

 

group

 

by

 

Cast

 

(

productname

 

as

 

nvarchar 

(

1

))