SQL RANK () über PARTITION für verknüpfte Tabellen

Ich habe zwei Tabellen RSLTS und CONTACTS:

RSLTS

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

KONTAKTE

 C_ID  |  QRY_ID  |  RES_ID
----------------------------
  1    |    A     |    2
  2    |    A     |    1
  3    |    C     |    9

Ich versuche, einen Bericht zu erstellen, der für jeden angezeigt wirdKONTAKT Aufzeichnung (C_ID), dasRANK() vonRES_ID (durchSCORE) in demRSLTS Tabelle innerhalb seiner Gruppe (QRY_ID). Unter Verwendung der obigen Daten würde dies so aussehen:

 C_ID  |  QRY_ID  |  RES_ID  |  SCORE  |  Rank
-----------------------------------------------
  1    |    A     |    2     |    32   |   1
  2    |    A     |    1     |    15   |   3
  3    |    C     |    9     |    30   |   2

Bisher habe ich es versucht, aber es gibt Rank = 1 für die letzte Zeile zurück (und Rank = 2 für die zweite, was auch falsch ist)

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

AKTUALISIEREN:SQLFiddle

Antworten auf die Frage(2)

Ihre Antwort auf die Frage