SQL RANK () sobre PARTITION nas tabelas associadas

Eu tenho duas tabelas RSLTS e CONTACTS:

RSLTS

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

CONTATOS

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

Estou tentando criar um relatório que mostre, para cadaCONTATO registro (C_ID), aRANK() doRES_ID (porSCORE) noRSLTS tabela dentro do seu grupo (QRY_ID). Usando os dados acima, ficaria assim:

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

Até agora, eu tentei isso, mas ele retorna Rank = 1 para a última linha (e rank = 2 para o segundo, que também está errado)

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

ATUALIZAR:SQLFiddle

questionAnswers(2)

yourAnswerToTheQuestion