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

Użycie funkcji COUNT w MSSQL

SELECT
      
	  count(Miastatid),Miastatid
     
  FROM [trening].[dbo].[sprzedarz]
  group by Miastatid
go

Funkcja Count zliczna ilośc wystąpień danego rekordu dając 0 dla wartości null.

SELECT
      
	  count(*),Miastatid
     
  FROM [trening].[dbo].[sprzedarz]
  group by Miastatid
go

W przypadku zastosowania * uzyskamy zupełnie inny wynik. Wynika to z tego, że są zliczane rekordy, a nie wartości.


SELECT
      
	  count(distinct Miastatid),Miastatid
     
  FROM [trening].[dbo].[sprzedarz]
  group by Miastatid

Możemy również zlicznać unikatowe wartości stosując DISTINCT.

Użycie funkcji SUM i AVG w MS SQL

SELECT 
SELECT
      
	  SUM(Koszt),Miastatid
     
  FROM [trening].[dbo].[sprzedarz]
  group by Miastatid

Funkcja SUM pozwala na sumowanie kosztów dla poszczególnych miast.
SELECT
      
	  AVG(Koszt),Miastatid
     
  FROM [trening].[dbo].[sprzedarz]
  group by Miastatid

Funkcja AVG pozwala obliczyć średni koszt dla poszczególnych miast.

Użcie funkcji MAX i MIN w MS SQL

SELECT
      
	  min(Koszt),
	  max(Koszt),
	  Miastatid
     
  FROM [trening].[dbo].[sprzedarz]
  group by Miastatid

Funckja max i min pozwala na wybranie maxymalnych i minmalnych wartości dla poszczególnych grup.

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
      
	  AVG(Koszt),Miastatid
     
  FROM [trening].[dbo].[sprzedarz]
  group by Miastatid
  HAVING AVG(Koszt) >50

W tym przykładzie za pomocą HAVING w t-sql możemy wybgrać grupy dla których średnia sprzedaż jest większa niż 50. (spr. funkcje t-sql)

SQL-KURSY.pl poleca:

Rozpocznij kolonizacje egzoplanety

Książki
ksikaksikaksikaksikaksika

Copyright 2010-2011 Mariusz Kujawski adres mariuszhk@op.pl

obob ob

Valid HTML 4.01 Transitional