下記のテーブルに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
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。