問題の説明と私が使用している現在のコードを投稿して、クエリのパフォーマンスを向上させるための賢いアイデアがあるかどうか疑問に思っていますか? MySQL の使用。ありがとう。
スコアをランク付けする SQL クエリを記述します。2 つのスコアが同点の場合は、両方のランキングが同じである必要があります。同点の場合、次のランキング番号は次の連続する整数値にする必要があることに注意してください。つまり、ランク間に「穴」があってはなりません。
+----+-------+
| Id | Score |
+----+-------+
| 1 | 3.50 |
| 2 | 3.65 |
| 3 | 4.00 |
| 4 | 3.85 |
| 5 | 4.00 |
| 6 | 3.65 |
+----+-------+
たとえば、上記の Scores テーブルの場合、クエリは次のレポートを生成する必要があります (最高スコア順)。
+-------+------+
| Score | Rank |
+-------+------+
| 4.00 | 1 |
| 4.00 | 1 |
| 3.85 | 2 |
| 3.65 | 3 |
| 3.65 | 3 |
| 3.50 | 4 |
+-------+------+
SELECT
s.score, scores_and_ranks.rank
FROM
Scores s
JOIN
(
SELECT
score_primary.score, COUNT(DISTINCT score_higher.score) + 1 AS rank
FROM
Scores score_primary
LEFT JOIN Scores score_higher
ON score_higher.score > score_primary.score
GROUP BY score_primary.score
) scores_and_ranks
ON s.score = scores_and_ranks.score
ORDER BY rank ASC;
ところで、ゴードンのコードから問題を投稿してください。
ところで、sgeddes のコードを試してみましたが、新しい問題に遭遇しました。
ゴードンのコードからの新しい問題、
前もって感謝します、リン