Udostępnij za pośrednictwem


AVG (Transact-SQL)

Zwraca średnią wartości w grupie.Wartości zerowe są ignorowane.Mogą być uzupełniane przez nad klauzula.

Ikona łącza do tematuJęzyka Transact-SQL składni konwencje

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)