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

SQL RANK() melalui PARTITION pada tabel yang digabungkan

Karena peringkat tidak bergantung sama sekali dari kontak

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

Jadi :

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. Pilih / Sisipkan versi Upsert:apakah ada pola desain untuk konkurensi tinggi?

  2. Konversi 'waktu' menjadi 'datetimeoffset' di SQL Server (Contoh T-SQL)

  3. Prosedur dan Izin Tersimpan - Apakah EXECUTE cukup?

  4. Bagaimana Menemukan Baris yang Duplikat dengan Kunci tetapi Bukan Duplikat di Semua Kolom?

  5. Bagaimana cara menggabungkan data OPENXML ke Inner Join Query saya?