Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

TSQL OVER клауза:COUNT(*) OVER (ORDER BY a)

Той дава текуща обща сума (тази функционалност не беше внедрена в SQL Server до версия 2012 г. .)

ORDER BY дефинира прозореца, който да бъде агрегиран с UNBOUNDED PRECEDING и CURRENT ROW като по подразбиране, когато не е посочено. SQL Server по подразбиране е по-малко производителен RANGE опция вместо ROWS .

Те имат различна семантика в случай на връзки в този прозорец за RANGE версията включва не само текущия ред (и предходните редове), но и всички допълнителни обвързани редове със същата стойност на a като текущия ред. Това може да се види в броя на редовете, преброени от всеки в резултатите по-долу.

SELECT  a, 
        b,
        COUNT(*) OVER (ORDER BY a 
                         ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS  [Rows],
        COUNT(*) OVER (ORDER BY a 
                         RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS [Range],
        COUNT(*) OVER() AS [Over()]
    FROM    t;

Връщане

a        b        Rows        Range       Over()
-------- -------- ----------- ----------- -----------
NULL     NULL     1           4           12
NULL     NULL     2           4           12
NULL     NULL     3           4           12
NULL     NULL     4           4           12
a        b        5           7           12
a        b        6           7           12
a        b        7           7           12
c        d        8           11          12
c        d        9           11          12
c        d        10          11          12
c        d        11          11          12
e        NULL     12          12          12

За да постигнете резултата, който сте очаквали, пропуснете и двете PARTITION BY и ORDER BY и използвайте празен OVER() клауза (също показана по-горе).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да хоствам сайт с ASPNETDB.MDF база данни от сървър за разработка на сървър за производство?

  2. Как да актуализирате стойността на всички xml атрибути в xml променлива с помощта на t-sql?

  3. Стартирайте всички SQL файлове в директория

  4. Невалидно име на колона в колони, създадени от оператор за избор

  5. Как да импортирам sql файл с данни в SQL Server?