AVG (Transact-SQL)
Zwraca średnią wartości w grupie.Wartości zerowe są ignorowane.Mogą być uzupełniane przez nad klauzula.
Składnia
AVG ( [ ALL | DISTINCT ] expression )
Argumenty
ALL
Dotyczy wszystkich wartościfunkcja wartość zagregowana. Jest wartością domyślną.DISTINCT
Określa, że AVG wykonać tylko na każde unikatowe wystąpienie wartość, bez względu na to ile razy występuje dana wartość.expression
Jest wyrażenie z dokładnie typ numeryczny lub przybliżonych danych numerycznych kategorii, z wyjątkiem bit typu danych.Funkcje agregujące i podkwerend nie są dozwolone.
Zwracane typy
Typ zwracany jest określany na podstawie typu ocenione wynik expression.
Wyrażenie wyników |
Zwracany typ |
---|---|
tinyint |
int |
smallint |
int |
int |
int |
bigint |
bigint |
decimalKategoria (p, s) |
decimal(38, s) podzielona przez decimal(10, 0) |
moneyi smallmoney kategorii |
money |
floati real kategorii |
float |
Uwagi
Jeśli typ danych expression dane alias typ zwracany typ jest również typu danych alias .Jednakże jeśli jest podwyższany podstawowy typ danych alias typu danych, na przykład z tinyint do int, wartość zwracana jest typ danych podwyższony i nie alias danych typu.
AVG () oblicza średnią z zestaw wartości, dzieląc przez liczbę niepustych wartości sumy tych wartości.Jeśli suma przekracza maksymalną wartość typ danych zwracanej wartości zostanie zwrócony błąd.
Przykłady
A.Za pomocą funkcji Suma i średnia dla obliczeń
W poniższym przykładzie oblicza średnią urlopy i suma chorym pozostawić godzin, przewodniczących vice Adventure Works Cycles zostało użyte.Każda z tych funkcji wartość zagregowana daje w wyniku pojedynczą wartość podsumowania wszystkich pobranych wierszy.
USE AdventureWorks2008R2;
GO
SELECT AVG(VacationHours)AS 'Average vacation hours',
SUM (SickLeaveHours) AS 'Total sick leave hours'
FROM HumanResources.Employee
WHERE JobTitle LIKE 'Vice President%';
Oto zestaw wyników.
Average vacation hours Total sick leave hours
---------------------- ----------------------
25 97
(1 row(s) affected)
B.Grupuj według klauzulaprzy użyciu funkcji Suma i średnia
Gdy używana z GROUP BYklauzula, każdejfunkcja wartość zagregowanadaje pojedynczą wartość dla każdej grupy zamiast całej tabela. P oniższy przykład tworzy wartości podsumowania dla każdego obszaru sprzedaży.Podsumowanie zawiera listę podwyższenia średniego otrzymane przez sprzedawców w każdym obszarze i Suma roku-do-data sprzedaży dla każdego regionu.
USE AdventureWorks2008R2;
GO
SELECT TerritoryID, AVG(Bonus)as 'Average bonus', SUM(SalesYTD) as 'YTD sales'
FROM Sales.SalesPerson
GROUP BY TerritoryID;
GO
C.Przy użyciu DISTINCT AVG
Następująca instrukcja zwraca wartość średnia cena listy produktów.
USE AdventureWorks2008R2;
GO
SELECT AVG(DISTINCT ListPrice)
FROM Production.Product;
Oto zestaw wyników.
------------------------------
437.4042
(1 row(s) affected)
D.Przy użyciu funkcji AVG bez DISTINCT
Bez DISTINCT AVG funkcja znajduje się średnia cena listę wszystkich produktów w Product tabela.
USE AdventureWorks2008R2;
GO
SELECT AVG(ListPrice)
FROM Production.Product;
Oto zestaw wyników.
------------------------------
438.6662
(1 row(s) affected)