Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Klausa TSQL OVER:COUNT(*) OVER (ORDER BY a)

Ini memberikan total berjalan (fungsi ini tidak diterapkan di SQL Server sampai versi 2012 .)

ORDER BY mendefinisikan jendela yang akan digabungkan dengan UNBOUNDED PRECEDING dan CURRENT ROW sebagai default bila tidak ditentukan. SQL Server default ke berperforma kurang baik RANGE opsi daripada ROWS .

Mereka memiliki semantik yang berbeda dalam hal ikatan di jendela untuk RANGE versi tidak hanya mencakup baris saat ini (dan baris sebelumnya) tetapi juga setiap baris terikat tambahan dengan nilai a yang sama sebagai baris saat ini. Hal ini dapat dilihat pada jumlah baris yang dihitung oleh masing-masing pada hasil di bawah ini.

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;

Pengembalian

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

Untuk mencapai hasil yang Anda harapkan, hilangkan keduanya PARTITION BY dan ORDER BY dan gunakan OVER() empty yang kosong klausa (juga ditunjukkan di atas).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kinerja Pengindeksan BigInt vs VarChar

  2. Masalah Fungsi Sql Pernyataan terakhir yang disertakan dalam suatu fungsi harus berupa pernyataan kembali

  3. berapa banyak gabungan yang dimiliki kueri sql

  4. Saya ingin menampilkan semua tabel yang memiliki nama kolom tertentu

  5. Fungsi Tab Silang SQL