下記のテーブルにRankを付けたい場合、表下の様なSQL文でRankを付けることはできるのですが、
scoretable
| id | name | score |
|---|---|---|
| 1 | aaa | 200 |
| 2 | bbb | 100 |
| 3 | ccc | 300 |
| 4 | ddd | 50 |
| 5 | eee | 500 |
lang
1SELECT 2 name, 3 score, 4 (SELECT 5 count(DISTINCT `score`) 6 FROM 7 `scoretable` as `b` 8 WHERE 9 `a`.`score` < `b`.`score`) + 1 as `Rank` 10FROM 11 `scoretable` as `a` 12;
以下のようなテーブル構成だった場合、nametableにscoretableをJOINしname_idをGRPUP BYしてscoreをSUMした結果に対してRankを付けようと思ったのですが上手くいきませんでした。ご教授ください。
nametable
| id | name |
|---|---|
| 1 | aaa |
| 2 | bbb |
| 3 | ccc |
| 4 | ddd |
| 5 | eee |
scoretable
| id | name_id | score |
|---|---|---|
| 1 | 2 | 10 |
| 2 | 1 | 20 |
| 3 | 3 | 30 |
| 4 | 1 | 20 |
| 5 | 2 | 50 |
【追記】
結合したテーブルに対してというより、SUM()を使用した場合のRank付けがうまくできないの間違いでした。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。