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

Jendela berfungsi untuk menghitung catatan yang berbeda

Saya menemukan pertanyaan ini dalam mencari solusi untuk masalah saya menghitung nilai yang berbeda. Dalam mencari jawaban, saya menemukan postingan ini . Lihat komentar terakhir. Saya sudah mengujinya dan menggunakan SQL. Ini bekerja sangat baik untuk saya dan saya pikir saya akan memberikan solusi lain di sini.

Singkatnya, menggunakan DENSE_RANK() , dengan PARTITION BY kolom yang dikelompokkan, dan ORDER BY keduanya ASC dan DESC pada kolom untuk menghitung:

DENSE_RANK() OVER (PARTITION BY drugClass ORDER BY drugName ASC) +
DENSE_RANK() OVER (PARTITION BY drugClass ORDER BY drugName DESC) - 1 AS drugCountsInFamilies

Saya menggunakan ini sebagai template untuk diri saya sendiri.

DENSE_RANK() OVER (PARTITION BY PartitionByFields ORDER BY OrderByFields ASC ) +
DENSE_RANK() OVER (PARTITION BY PartitionByFields ORDER BY OrderByFields DESC) - 1 AS DistinctCount

Saya harap ini membantu!



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Dilema Penamaan Tabel:Nama Tunggal vs. Nama Jamak

  2. Cara menghitung Perkalian Lari

  3. Sortir Alfanumerik

  4. Cara mengulang dan mengurai parameter xml dalam prosedur tersimpan server sql

  5. Cara membatasi pengguna yang tidak masuk/tidak sah melihat halaman web di ASP.NET