Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Chức năng cửa sổ để đếm các bản ghi riêng biệt

Tôi đã gặp câu hỏi này để tìm kiếm giải pháp cho vấn đề đếm các giá trị riêng biệt của mình. Khi tìm kiếm câu trả lời, tôi đã xem qua bài đăng này . Xem bình luận cuối cùng. Tôi đã thử nghiệm nó và sử dụng SQL. Nó thực sự hoạt động tốt đối với tôi và tôi đã nghĩ rằng tôi sẽ cung cấp một giải pháp khác ở đây.

Tóm lại, sử dụng DENSE_RANK() , với PARTITION BY các cột được nhóm lại và ORDER BY cả ASCDESC trên các cột để đếm:

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

Tôi sử dụng cái này làm mẫu cho chính mình.

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

Tôi hy vọng điều này sẽ hữu ích!



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. TSQL để nhận các bản ghi DISTINCT theo thứ tự và sau đó áp dụng số hàng

  2. Câu lệnh SQL Server WITH

  3. SQL 2008 - kiểu dữ liệu varchar (max) so với văn bản

  4. Đổi tên Kiểu dữ liệu do người dùng xác định trong SQL Server (T-SQL)

  5. Thứ tự cài đặt thích hợp cho Visual Studio 2010 với SQL Server 2008 và Office 2007?