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

SQL RANK () qua PARTITION trên các bảng đã tham gia

Vì thứ hạng hoàn toàn không phụ thuộc vào các địa chỉ liên hệ

RANKED_RSLTS

 QRY_ID  |  RES_ID  |  SCORE |  RANK
-------------------------------------
   A     |    1     |    15  |   3
   A     |    2     |    32  |   1
   A     |    3     |    29  |   2
   C     |    7     |    61  |   1
   C     |    9     |    30  |   2

Như vậy:

SELECT
    C.*
    ,R.SCORE
    ,MYRANK
FROM CONTACTS C LEFT JOIN
(SELECT  *,
 MYRANK = RANK() OVER (PARTITION BY QRY_ID ORDER BY SCORE DESC)
  FROM RSLTS)  R
ON C.RES_ID = R.RES_ID
AND C.QRY_ID = R.QRY_ID


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm thế nào để đối phó với các tên cột SQL trông giống như các từ khóa SQL?

  2. Làm tròn số thập phân trong SQL Server 2008

  3. Khôi phục cơ sở dữ liệu từ các tệp .mdf và .ldf của SQL Server 2008

  4. 4 cách để kiểm tra xem một bảng có tồn tại hay không trước khi loại bỏ nó trong SQL Server (T-SQL)

  5. T-SQL:Làm tròn đến khoảng thời gian 15 phút gần nhất