私はSQLについての質問があります。私はこのような質問があります。sql whereスコア> = s.score
+----+-------+
| Id | Score |
+----+-------+
| 1 | 3.50 |
| 2 | 3.65 |
| 3 | 4.00 |
| 4 | 3.85 |
| 5 | 4.00 |
| 6 | 3.65 |
+----+-------+
テーブルが「スコア」と呼ばれ、ここでスコアをランク付けした後、それはこのようになりますが、ここで
+-------+------+
| Score | Rank |
+-------+------+
| 4.00 | 1 |
| 4.00 | 1 |
| 3.85 | 2 |
| 3.65 | 3 |
| 3.65 | 3 |
| 3.50 | 4 |
+-------+------+
は、サンプルの答えですが、私は後の部分について混乱しています。
select
s.Score,
(select count(distinct Score) from Scores where Score >= s.Score)
Rank
from Scores s
order by s.Score Desc;
このスコア> = s.Scoreは、それ自体と比較したスコア列のようなものです。私はこの部分について完全に混乱しているように感じます。どのように機能するのですか?ありがとうございました!
E.
@TimBiegeleisenありません:} – user2864740
効率的な方法は何ですか? googleで検索できる例やキーワードは何ですか?私は何を検索するか分からない。 lol – Eleanor
@Eleanor https://stackoverflow.com/questions/1895110/row-number-in-mysqlを参照してください。* MySQL 8.0 *は 'RANK'機能を追加しています。そこの答えは、以前のバージョンのMySQLの代替方法も示しています。 (これは私が何年もMySQLを使用していなかったことを示しています!) – user2864740