Udostępnij za pośrednictwem


AVG (języka Transact-SQL)

Zwraca średnią wartości w grupie.Wartości null są ignorowane.Może nastąpić W klauzula.

Topic link iconKonwencje składni języka Transact-SQL

AVG ( [ ALL | DISTINCT ] expression ) 

Argumenty

  • ALL
    Dotyczy wszystkich wartości funkcja agregacja.WSZYSTKO jest domyślnym.

  • DISTINCT
    Określa, że AVG można wykonać tylko na każde wystąpienie unikatowych wartości, bez względu na to ile razy występuje wartość.

  • expression
    Is wyrażenie kategorii typu dokładne dane liczbowe numerycznych lub przybliżonej, z wyjątkiem bit Typ danych. Funkcje agregacja i podkwerend nie są dozwolone.

Zwracane typy

Zwracany typ zależy od typu ocenione wynik expression.

Wynik wyrażenie

Zwracany typ

tinyint

int

smallint

int

int

int

bigint

bigint

decimal Kategoria (p, s)

decimal(38, s) podzielone przez decimal(10, 0)

money i smallmoney Kategoria

money

float i real Kategoria

float

Remarks

Jeśli typ danych expression to alias dane typu, typ zwracany jest również typu danych aliasu. Niemniej jednak jeśli podstawowy typ danych alias typ danych jest podwyższany, na przykład z tinyint Aby int, wartość zwracana jest podwyższony danych typu i nie typ danych aliasu.

AVG () oblicza średnią z zestaw wartości przez podzielenie sumy tych wartości przez liczbę niepustych wartości.Jeśli suma przekracza maksymalną wartość dla typu danych wartości wynikowej, zostanie zwrócony błąd.

Przykłady

A.Za pomocą funkcji Suma i AVG do obliczeń

W poniższym przykładzie oblicza średnią urlopy i suma wynagrodzeń z tytułu zwolnień lekarskich pozostawić godzin, prezesi vice z Adventure Works Cycles użyto funkcji. Każda z tych funkcji agregacja daje w wyniku jedną wartość wszystkie wiersze zostały pobrane.

USE AdventureWorks;
GO
SELECT AVG(VacationHours)as 'Average vacation hours', 
    SUM  (SickLeaveHours) as 'Total sick leave hours'
FROM HumanResources.Employee
WHERE Title LIKE 'Vice President%';

Here is the result set.

Średnia godzin lekarskie razem urlopy

---------------------- ----------------------

25 97

(dotyczy wiersze 1)

B.Za pomocą funkcji Suma i AVG w klauzula GROUP BY

W przypadku użycia z GROUP BY daje w klauzula, każdej funkcja agregacja wyniku jedną wartość dla każdej grupy zamiast całej tabela. W poniższym przykładzie daje w wyniku wartości podsumowań dla każdego obszaru sprzedaży.Podsumowanie wyświetla średni premii, odebrane przez sprzedawców w każdym obszarze i Suma sprzedaży od początku roku dla każdego obszaru.

USE AdventureWorks;
GO
SELECT TerritoryID, AVG(Bonus)AS 'Average bonus', SUM(SalesYTD) AS 'YTD sales'
FROM Sales.SalesPerson
GROUP BY TerritoryID;
GO

C.Przy użyciu AVG z DISTINCT

Następująca instrukcja zwraca wartość średnią ceną listy produktów.

USE AdventureWorks;
GO
SELECT AVG(DISTINCT ListPrice)
FROM Production.Product;

Here is the result set.

------------------------------

437.4042

(dotyczy wiersze 1)

D.Za pomocą AVG bez DISTINCT

Bez DISTINCT AVG Funkcja znajduje się lista średniej ceny wszystkich produktów w Product Tabela.

USE AdventureWorks;
GO
SELECT AVG(ListPrice)
FROM Production.Product;

Here is the result set.

------------------------------

438.6662

(dotyczy wiersze 1)