0 von 2 fanden dies hilfreich - Dieses Thema bewerten.

AVG (Transact-SQL)

Gibt den Mittelwert der Werte in einer Gruppe zurück. NULL-Werte werden ignoriert. Darauf folgt möglicherweise die OVER-Klausel.

Themenlink (Symbol) Transact-SQL-Syntaxkonventionen


AVG ( [ ALL | DISTINCT ] expression ) 
ALL

Wendet die Aggregatfunktion auf alle Werte an. ALL ist die Standardeinstellung.

DISTINCT

Gibt an, dass AVG nur für jede eindeutige Instanz eines Wertes ausgeführt werden soll, unabhängig davon, wie oft der Wert vorkommt.

expression

Ist ein Ausdruck der exakten numerischen oder ungefähren numerischen Datentypkategorie, mit Ausnahme des bit-Datentyps. Aggregatfunktionen und Unterabfragen sind nicht zulässig.

Der Rückgabetyp wird durch den Typ des ausgewerteten Ergebnisses von expression bestimmt.

Ausdrucksergebnis Rückgabetyp

integer-Kategorie

int

decimal-Kategorie (p, s)

decimal(38, s) dividiert durch decimal(10, 0)

Kategorien money und smallmoney

money

Kategorien float und real

float

ms177677.note(de-de,SQL.90).gifWichtig:
DISTINCT-Aggregate, z. B. AVG(DISTINCT column_name), COUNT(DISTINCT column_name), MAX(DISTINCT column_name), MIN(DISTINCT column_name) und SUM(DISTINCT column_name), werden nicht unterstützt, wenn CUBE oder ROLLUP verwendet wird. In diesem Fall gibt SQL Server 2005-Datenbankmodul eine Fehlermeldung zurück und bricht die Abfrage ab.

Wenn der Datentyp von expression ein Aliasdatentyp ist, ist der Rückgabetyp ebenfalls ein Aliasdatentyp. Wird der Basisdatentyp des Aliasdatentyps jedoch heraufgestuft, beispielsweise von tinyint zu int, handelt es sich beim Rückgabetyp um den heraufgestuften Datentyp und nicht um den Aliasdatentyp.

A. Verwenden der Funktionen SUM und AVG für Berechnungen

Im folgenden Beispiel werden die durchschnittlichen Urlaubstage und die Summe der Krankheitstage (in Stunden) der stellvertretenden Direktoren von Adventure Works Cycles berechnet. Beide Aggregatfunktionen erzeugen jeweils einen zusammenfassenden Wert für alle abgerufenen Zeilen.

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%';

Dies ist das Resultset.

Average vacation hours       Total sick leave hours 
----------------------       ---------------------- 
25                           97

(1 row(s) affected)

B. Verwenden der Funktionen SUM und AVG mit einer GROUP BY-Klausel

In Verbindung mit einer GROUP BY-Klausel erzeugt jede Aggregatfunktion einen einzelnen Wert für jede Gruppe anstelle eines Wertes für die gesamte Tabelle. Im folgenden Beispiel werden zusammenfassende Werte für die einzelnen Vertriebsregionen erstellt. In der Zusammenfassung werden die durchschnittlichen Bonusleistungen von Vertriebsmitarbeitern der einzelnen Regionen und die Summe der Verkaufszahlen für das laufende Jahr in den Regionen aufgelistet.

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

C. Verwenden von AVG mit DISTINCT

In der folgenden Anweisung wird der durchschnittliche Listenpreis von Produkten zurückgegeben.

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

Dies ist das Resultset.

------------------------------
437.4042
(1 row(s) affected)
 

D. Verwenden von AVG ohne DISTINCT

Ohne DISTINCT wird mithilfe der AVG-Funktion nach dem durchschnittlichen Listenpreis aller Produkte in der Product-Tabelle gesucht.

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

Dies ist das Resultset.

------------------------------
438.6662
(1 row(s) affected)
Fanden Sie dies hilfreich?
(1500 verbleibende Zeichen)
Community-Inhalt Hinzufügen
Anmerkungen FAQ
Microsoft führt eine Onlineumfrage durch, um Ihre Meinung zur MSDN-Website zu erfahren. Wenn Sie sich zur Teilnahme entscheiden, wird Ihnen die Onlineumfrage angezeigt, sobald Sie die MSDN-Website verlassen.

Möchten Sie an der Umfrage teilnehmen?