Udostępnij za pomocą


VAR (Transact-SQL)

Dotyczy:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)Punkt końcowy analizy SQL w usłudze Microsoft FabricHurtownia danych w usłudze Microsoft FabricBaza danych SQL w usłudze Microsoft Fabric

Zwraca statystyczną wariancję wszystkich wartości w podanym wyrażeniu. Może być zastąpiona klauzulą OVER.

Transact-SQL konwencje składni

Składnia

-- Aggregate Function Syntax   
VAR ( [ ALL | DISTINCT ] expression )  
  
-- Analytic Function Syntax  
VAR ([ ALL ] expression) OVER ( [ partition_by_clause ] order_by_clause)  

Arguments

WSZYSTKIE
Stosuje tę funkcję do wszystkich wartości. WSZYSTKO jest domyślne.

ODMIENNY
Określa, że każda unikatowa wartość jest brana pod uwagę.

expression
Jest wyrażeniem dokładnej kategorii numerycznej lub przybliżonej kategorii danych numerycznych, z wyjątkiem typu danych bitowych . Funkcje agregowane i podzapytania nie są dozwolone.

KONIEC ( [ partition_by_clause ] order_by_clause)
partition_by_clause dzieli zbiór wyników wytworzony przez klauzulę FROM na partycje, do których funkcja jest stosowana. Jeśli nie zostanie określony, funkcja traktuje wszystkie wiersze zestawu wyników zapytania jako pojedynczą grupę. order_by_clause określa kolejność logiczną, w której jest wykonywana operacja. order_by_clause jest wymagane. Aby uzyskać więcej informacji, zobacz OVER Clause (Transact-SQL).

Typy zwracane

float

Uwagi

Jeśli VAR jest używany na wszystkich elementach w instrukcji SELECT, każda wartość w zestawie wyników jest uwzględniona w obliczeniach. VAR może być używany wyłącznie z kolumnami numerycznymi. Wartości zerowe są ignorowane.

VAR jest funkcją deterministyczną, gdy używa się bez klauzul OVER i ORDER BY. Jest niedeterministyczna, gdy jest określana klauzulami OVER i ORDER BY. Aby uzyskać więcej informacji, zobacz Funkcje deterministyczne i niedeterministyczne.

Przykłady

O: Wykorzystanie VAR

Poniższy przykład zwraca wariancję dla wszystkich wartości bonusowych w tabeli SalesPerson bazy AdventureWorks2025.

SELECT VAR(Bonus)  
FROM Sales.SalesPerson;  
GO  

Przykłady: Azure Synapse Analytics and Analytics Platform System (PDW)

B: Używanie VAR

Poniższy przykład zwraca statystyczną wariancję wartości kwoty sprzedaży w tabeli dbo.FactSalesQuota. Pierwsza kolumna zawiera wariancję wszystkich różnych wartości, a druga kolumna zawiera wariancję wszystkich wartości, w tym wartości zduplikowanych.

-- Uses AdventureWorks  
  
SELECT VAR(DISTINCT SalesAmountQuota)AS Distinct_Values, VAR(SalesAmountQuota) AS All_Values  
FROM dbo.FactSalesQuota;  

Oto zestaw wyników.

Distinct_Values   All_Values
----------------  ----------------
159180469909.18   158762853821.10

C. Używanie VAR z OVER

Poniższy przykład zwraca statystyczną zmienność wartości kwoty sprzedaży za każdy kwartał roku kalendarzowego. Zauważ, że ORDER BY w klauzuli OVER porządkuje wariancję statystyczną, a ORDER BY w instrukcji SELECT uporządkowuje zbiór wyników.

-- Uses AdventureWorks  
  
SELECT CalendarYear AS Year, CalendarQuarter AS Quarter, SalesAmountQuota AS SalesQuota,  
       VAR(SalesAmountQuota) OVER (ORDER BY CalendarYear, CalendarQuarter) AS Variance  
FROM dbo.FactSalesQuota  
WHERE EmployeeKey = 272 AND CalendarYear = 2002  
ORDER BY CalendarQuarter;  

Oto zestaw wyników.

Year  Quarter  SalesQuota              Variance
----  -------  ----------------------  -------------------
2002  1         91000.0000             null
2002  2        140000.0000             1200500000.00
2002  3         70000.0000             1290333333.33
2002  4        154000.0000             1580250000.00

Zobacz też

funkcje agregujące (Transact-SQL)
Klauzula OVER (Transact-SQL)