東京都の学校別のランクを作っています。
現在、name school pointまでは記載されています。
この後、SQL構文で、rank欄に学校内順位を入れ、city欄にtokyoを入れたいと考えています。
完成形は下記のようなものです。
(同点2位が2人いたら、いずれも2とし、その次の人は4となる)
table
name__school__city___point___rank
kameda__1高__tokyo___345____ 1
suzuki__2高__tokyo___341____ 1
kaneko__3高__tokyo___332____ 1
yosida__2高__tokyo___321____ 2
tanita__1高__tokyo___310____ 2
suyama__1高__tokyo___310____ 2
kisida__2高__tokyo___301____ 3
komine__1高__tokyo___299____ 4
tomita__2高__tokyo___289____ 4
sugita__1高__tokyo___275____ 5
下記のreplace文を考えたのですが、学校別の順位ではなく全体順位の入力となってしまいます。
REPLACE INTO table(rank,city)
SELECT (
SELECT COUNT(t2.poit)
FROM table t2
WHERE t2.poitn > t1.point
AND t2.school = t1.school
GROUP BY t2.school
) + 1 AS rank,tokyo
FROM table t1;
学校別の順位を入力するためにはどのように改良すればいいでしょうか?
SQLはmySQL5.5 CentOS6.3です。
よろしくお願いいたします。
No.1ベストアンサー
- 回答日時:
元表のプライマリキーはどうなっているのでしょうか?
nameをidにするとユニークを確保するのがかなり大変ですが大丈夫ですか?
//準備
create table seiseki(name varchar(20) primary key,school varchar(10),city varchar(10) null,point int not null,rank int null);
insert into seiseki(name,school,point) values ('kameda','1高',345),('suzuki','2高',341),('kaneko','3高',332),('yosida','2高',321),('tanita','1高',310),('suyama','1高',310),('kisida','2高',301),('komine','1高',299),('tomita','2高',289),('sugita','1高',275);
select * from seiseki;
//nameごとのschool単位での順位
select name,(select count(*) +1 from seiseki as t2 where 1 and t2.point > t1.point and t2.school= t1.school ) as rank
from seiseki as t1;
//上を応用して、rankとcityを更新
update seiseki as t0
inner join (select name,(select count(*) +1 from seiseki as t2 where 1 and t2.point > t1.point and t2.school= t1.school ) as rank
from seiseki AS t1 ) as t3 on t0.name=t3.name
set t0.rank=t3.rank,t0.city='tokyo';
ご教授いただき有難うございます。
おかげさまで望む形のものを作ることが出来ました
ご指摘いただきましたIDについては、別にユーザーIDを別に作り対応することにしました。
本当に有難うございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- MySQL SQLです。こんな感じですか?あってますか? うまくいきません教えてくださいお願いします 1 2023/07/08 15:27
- MySQL うまくいきません教えてくださいお願いしますSQLです。クエリ構文です。 1 2023/07/07 12:39
- 経済 東京都の国際金融都市の地位 3 2023/04/25 22:20
- 英語 関係代名詞 whatについてです。 右ページの4番、5番がよくわかりません。 You have ma 1 2022/11/29 19:28
- 英語 関係代名詞 whatについてです。 右ページの4番、5番がよくわかりません。 You have ma 2 2022/11/29 19:29
- 英語 関係代名詞 whatについてです。 右ページの4番、5番がよくわかりません。 You have ma 1 2022/11/29 20:05
- PHP コメント機能に返信欄を矢印で追加したい 1 2022/05/09 21:17
- Excel(エクセル) RANK.EQとCOUNTIFSの組み合わせで同ポイントの場合、違う条件を加えて順位を付けたい。 1 2022/08/30 19:49
- その他(学校・勉強) 学生の体力テストで、個人の全国順位を記載される学校はありますか? 全国高等学校体力テスト ○位 / 2 2023/03/14 15:16
- その他(行政) 東京都市区町村別 財政力ランキング 市区町村別 財政力ランキング(東京都) https://www. 1 2023/04/27 11:47
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
SQL文で右から1文字だけ削除す...
-
sum()の出力結果順に並び替えを...
-
使うべきでない文字。
-
MySQLで MAX()とGROUP BYを使う...
-
SQLの集計で「全て」の合計も表...
-
カウント結果を1レコードの中...
-
割合(パーセント)を求めるに...
-
【MYSQL】asでリネームしてwher...
-
Accessで別テーブルの値をフォ...
-
Oracleでの文字列連結サイズの上限
-
GROUP BYを行った後に結合した...
-
MERGE文を単体テーブルに対して...
-
レコードが存在しなかった場合
-
select句副問い合わせ 値の個...
-
GROUP BYを使ったSELECT文の総...
-
ファイル書込みで一行もしくは...
-
ADO VBA 実行時エラー3021
-
エクセルの指定したシートにエ...
-
SQL文で素早くNULLを除外する方法
-
OracleのSQL*PLUSで、デー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
SQL文で右から1文字だけ削除す...
-
【MYSQL】asでリネームしてwher...
-
使うべきでない文字。
-
sum()の出力結果順に並び替えを...
-
SQLの集計で「全て」の合計も表...
-
割合(パーセント)を求めるに...
-
MySQLで MAX()とGROUP BYを使う...
-
カウント結果を1レコードの中...
-
チェックボックスの項目をDBにi...
-
【初歩】ラジオボタンをつかっ...
-
月別、販売員別の集計がわかり...
-
何にかが違うから エラーなんで...
-
表示幅を短くしたい
-
phpmyadminはトリガーやIF文を...
-
MySQL のデータからドロップダ...
-
MySQL関数max()を条件にSELECT...
-
MySQLにて特定レコードのみを抽...
-
重複が
-
名寄せして件数を取得する事は...
-
MySQLで2つのテーブルのデータ...
おすすめ情報