sql >> Databáze >  >> RDS >> Sqlserver

SQL kumulativní počet

Zde je způsob, jak to provést pomocí CTE namísto kurzoru:

WITH Base AS
(
    SELECT ROW_NUMBER() OVER (ORDER BY [Count] DESC) RowNum,
    [Dept],
    [Count]
    FROM SR
)
SELECT SR.Dept, SR.Count, SUM(SR2.[Count]) Total
FROM Base SR
INNER JOIN Base SR2
    ON SR2.RowNum <= SR.RowNum
GROUP BY SR.Dept, SR.Count
ORDER BY SR.[Count] DESC

Všimněte si, že se jedná o sestupné řazení Count jako váš výsledek vzorku. Pokud existuje nějaký jiný sloupec, který není zobrazen a který by měl být použit pro objednání, nahraďte Count v každém z ORDER BY klauzule.

Ukázka SQL Fiddle



  1. Jak vytvořit funkci, která vrací nejvyšší id?

  2. Aktualizace tabulky na PK a dalším poli v MySQL je sporadicky pomalá

  3. Mysql dotaz, který vrací strom kategorií

  4. jak aktualizovat více tabulek v Oracle DB?