Mål: Denne opplæringen tar sikte på å hjelpe deg med å forstå hvordan du beregner gjennomsnittet av et gitt sett med verdier i SQL Server ved å bruke AVG () -funksjonen.
SQL Server AVG -funksjon
AVG () -funksjonen er en samlet funksjon som lar deg bestemme gjennomsnittet for et gitt sett med verdier. Funksjonen vil ignorere nullverdier i inngangen.
Følgende viser syntaks for AVG () -funksjonen:
AVG ([alle | distinkt] uttrykk)
[Over ([Partition_by_clause] Order_by_clause)]
Funksjonsargumenter
Funksjonen støtter følgende argumenter:
Funksjonsreturverdien vil avhenge av inndatatypen. Følgende tabell viser den tilsvarende utgangstypen for en gitt inngangstype.
Inngangstype | Resulterende type |
Tinyint | int |
int | int |
SmallInt | int |
Bigint | Bigint |
flyte og ekte | flyte |
Penger/SmallMoney | penger |
desimal | desimal |
Eksempelbruk
La oss se på noen eksempelbruk for AVG () -funksjonen.
Eksempel 1 - Bruke AVG () med distinkt
Følgende eksempel oppretter en eksempeltabell og setter inn noen tilfeldige verdier.
Drop -databasen hvis eksisterer Sample_DB;
opprette databaseprøve_db;
Bruk prøve_db;
Lag tabell TBL (
Tilfeldig int,
);
Sett inn TBL (tilfeldig)
verdier (101), (69), (62), (99), (45), (80), (66), (61), (46), (28), (66);
I følgende spørsmål bruker vi AVG () -funksjonen for å bestemme gjennomsnittet for de distinkte verdiene i kolonnen som vist:
Velg AVG (distinkt tilfeldig) som gjennomsnitt fra TBL;
I dette tilfellet beregner funksjonen gjennomsnittet for unike verdier i kolonnen. Den resulterende verdien er som vist:
Eksempel 2 - Bruke AVG () -funksjonen med alle
For å la funksjonen inkludere dupliserte verdier, kan vi bruke alt nøkkelordet som vist:
Velg AVG (alle tilfeldige) som gjennomsnitt fra TBL;
I dette tilfellet vurderer funksjonen alle elleve verdier i stedet for 10 som tidligere anvendt.
MERK: Avhengig av den resulterende typen, kan verdien avrundes, og gjøre bruken av alle og distinkte ubetydelig.
For eksempel:
101+69+62+99+45+80+66+61+46+28+66/11 = 65.7272727273
101+69+62+99+45+80+66+61+46+28/10 = 65.7
Som du ser fra utgangen ovenfor, vises forskjellen hovedsakelig når den resulterende typen er en flytende punktverdi.
Bruke AVG -funksjonen med Group by Clause
Tenk på tabellen nedenfor:
Vi kan beregne gjennomsnittsprisen for hvert produkt av en gitt produsent som bruker gruppen etter klausul og AVG () -funksjonen som illustrert nedenfor:
Velg produsent, AVG (pris) som 'gjennomsnittspris', sum (mengde) som 'på lager'
fra produkter
gruppe av produsent;
Spørringen ovenfor bør organisere radene i forskjellige partisjoner basert på produsenten. Vi beregner deretter gjennomsnittsprisen for alle produktene i hver partisjon.
Det resulterende tabellen er som vist:
Konklusjon
I dette innlegget dekket vi grunnleggende om å jobbe med AVG -funksjonen i SQL Server for å bestemme gjennomsnittet for et gitt sett med verdier.
Takk for at du leste!!