Sdílet prostřednictvím


CUME_DIST (Transact-SQL)

Platí pro:SQL ServerAzure SQL DatabaseSpravovaná instance Azure SQLAzure Synapse AnalyticsKoncový bod analýzy SQL v Microsoft FabricSklad v Microsoft FabricDatabáze SQL v Microsoft Fabric

Pro SQL Server tato funkce počítá kumulativní rozdělení hodnoty v rámci skupiny hodnot. Jinými slovy, vypočítá CUME_DIST relativní polohu dané hodnoty ve skupině hodnot. Při vzestupném pořadí je hodnota CUME_DIST v řádku r definována jako počet řádků s hodnotami menšími nebo rovnými této hodnotě v řádku r, dělený počtem řádků vyhodnocených v množině výsledků rozdělení nebo dotazu. CUME_DISTje podobná funkci.PERCENT_RANK

Transact-SQL konvence syntaxe

Syntaxe

CUME_DIST( )  
    OVER ( [ partition_by_clause ] order_by_clause )  

Arguments

KONEC ([ partition_by_clause ] order_by_clause)

partition_by_clause rozděluje množinu výsledků FROM na oddíly, na které je funkce aplikována. Pokud argument partition_by_clause není specifikován, CUME_DIST považuje všechny řádky výsledků množiny dotazů za jednu skupinu. order_by_clause určuje logické pořadí, ve kterém operace probíhá. CUME_DIST vyžaduje order_by_clause. CUME_DISTnepřijímá klauzuli <> o řádcích nebo rozsahu syntaxe OVER. Pro více informací viz OVER Clause (Transact-SQL).

Návratové typy

Float(53)

Poznámky

CUME_DIST vrací rozsah hodnot větších než 0 a menších nebo rovných 1. Hodnoty remízy se vždy vyhodnocují na stejnou kumulativní distribuční hodnotu. CUME_DIST ve výchozím nastavení zahrnuje hodnoty NULL a považuje je za nejnižší možné hodnoty.

CUME_DIST je nedeterministické. Další informace naleznete v tématu Deterministické a nedeterministické funkce.

Examples

Tento příklad používá CUME_DIST funkci k výpočtu percentilu platů pro každého zaměstnance v daném oddělení. CUME_DIST vrací hodnotu, která představuje procento zaměstnanců s platem nižším nebo roven současnému zaměstnanci ve stejném oddělení. Tato PERCENT_RANK funkce počítá procentuální hodnocení mzdy zaměstnance v rámci oddělení. Pro rozdělení řádků výsledkové množiny podle oddělení příklad specifikuje hodnotu partition_by_clause . Klauzule ORDER BY v klauzuli OVER logicky řadí řádky v každé části. Klauzule ORDER BY v příkazu SELECT určuje pořadí zobrazení výsledné množiny.

USE AdventureWorks2022;  
GO  
SELECT Department, LastName, Rate,   
       CUME_DIST () OVER (PARTITION BY Department ORDER BY Rate) AS CumeDist,   
       PERCENT_RANK() OVER (PARTITION BY Department ORDER BY Rate ) AS PctRank  
FROM HumanResources.vEmployeeDepartmentHistory AS edh  
    INNER JOIN HumanResources.EmployeePayHistory AS e    
    ON e.BusinessEntityID = edh.BusinessEntityID  
WHERE Department IN (N'Information Services',N'Document Control')   
ORDER BY Department, Rate DESC;  

Tady je soubor výsledků.

Department             LastName               Rate                  CumeDist               PctRank  
---------------------- ---------------------- --------------------- ---------------------- ----------------------  
Document Control       Arifin                 17.7885               1                      1  
Document Control       Norred                 16.8269               0.8                    0.5  
Document Control       Kharatishvili          16.8269               0.8                    0.5  
Document Control       Chai                   10.25                 0.4                    0  
Document Control       Berge                  10.25                 0.4                    0  
Information Services   Trenary                50.4808               1                      1  
Information Services   Conroy                 39.6635               0.9                    0.888888888888889  
Information Services   Ajenstat               38.4615               0.8                    0.666666666666667  
Information Services   Wilson                 38.4615               0.8                    0.666666666666667  
Information Services   Sharma                 32.4519               0.6                    0.444444444444444  
Information Services   Connelly               32.4519               0.6                    0.444444444444444  
Information Services   Berg                   27.4038               0.4                    0  
Information Services   Meyyappan              27.4038               0.4                    0  
Information Services   Bacon                  27.4038               0.4                    0  
Information Services   Bueno                  27.4038               0.4                    0  
(15 row(s) affected)  

Viz také

PERCENT_RANK (Transact-SQL)