SQLの処理について質問です。
成績管理用のデータをテーブルに格納しております。
最初に、日付・科目・名前・点数のデータをINSERTします。
例)
id 日付 科目 名前 点数 順位
1 2021/04/20 理科 佐藤 86 None
2 2021/04/20 理科 山田 46 None
3 2021/04/20 理科 田中 96 None
4 2021/04/20 理科 小林 97 None
5 2021/04/20 社会 佐藤 86 None
6 2021/04/20 社会 鈴木 50 None
7 2021/08/21 理科 佐藤 66 None
8 2021/08/21 理科 山田 99 None
9 2021/08/21 理科 田中 50 None
10 2021/08/21 理科 小林 55 None
各科目のテスト順位を計算し、Noneになっているカラムに順位を入力したいです。
すなわち、対象となる行を選択し、該当するカラムを比較・計算して、最終的に希望のカラムへ結果を入力する処理です。
この処理をSQL上でどのように書けばよいのか、調べたのですがいまいち方法が掴めませんでしたので、知恵をお借りしたく存じます。
なお、同日に同一科目のテストは複数実施しておりませんが、別日には実施しています。
つまり、各テストの区別は日付列と科目列の両方をチェックする必要があります。
処理後、下記のようになるのがゴールです。
例)
id 日付 科目 名前 点数 順位
1 2021/04/20 理科 佐藤 86 3
2 2021/04/20 理科 山田 46 4
3 2021/04/20 理科 田中 96 2
4 2021/04/20 理科 小林 97 1
5 2021/04/20 社会 佐藤 86 1
6 2021/04/20 社会 鈴木 50 2
7 2021/08/21 理科 佐藤 66 2
8 2021/08/21 理科 山田 99 1
9 2021/08/21 理科 田中 50 4
10 2021/08/21 理科 小林 55 3
SQL上での処理が難しければ、一度データを取り出して、Pythonで順位を計算したあと、結果を順位カラムへINSERTすることを考えています。
よろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- SQL Server [SQLServer] テーブル名からカラム名を取得する 1 2022/08/23 21:20
- C言語・C++・C# C言語 プログラミング 4 2022/05/22 11:53
- 中学校 理科だけが極端に苦手 5 2022/09/10 14:18
- 大学受験 偏差値50弱の高校からmarchの文系に行きたく、そのためにアドバイスをいただきたいです。 自分は中 5 2022/09/27 16:37
- 高校受験 あと3ヶ月で偏差値10上げる方法を教えてください 3 2022/12/16 19:14
- 高校受験 学校休んで友達と受験勉強すること 4 2022/10/22 13:15
- 高校受験 学校休んでまでテスト勉強はありか? 5 2022/10/21 20:01
- 高校受験 受験勉強のために学校を欠席したい 3 2022/10/23 15:45
- 中学校 理科で点数をあげる方法。 4 2022/06/28 23:54
- その他(プログラミング・Web制作) pythonのWebスクレイピングでfind_allだとurlがNoneに 4 2022/04/17 18:21
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
一部のカラムでdistinctし全て...
-
頭に0が付く文字
-
ドロップダウンリストの連動し...
-
エクセルかワードで家系図を作...
-
日付を一括UPDATE
-
SELECT文で、指定カラム以外の...
-
sql , insert で空行(全ての列...
-
カラム上の重複を削除するクエ...
-
now()かCURRENT_TIMESTAMPか
-
複数テーブルから全データ取得...
-
MYSQLで全てのカラムから検索す...
-
MYSQLで小数点を表示する場合と...
-
SQLServerでNULLを挿入したいです
-
INDIRECT関数の代替方法は?
-
テーブルの列数を調べたい
-
インデックスを削除したいので...
-
連番を振る インデックス 付...
-
JDBCドライバがない?
-
select * での表示が崩れる?
-
複数カラムに対するLIKE文の最適化
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
一部のカラムでdistinctし全て...
-
SELECT文で、指定カラム以外の...
-
now()かCURRENT_TIMESTAMPか
-
UNIONする際、片方テーブルしか...
-
MYSQLで全てのカラムから検索す...
-
GREATESTで NULLをスルーする方...
-
構造が異なる二つのテーブルをu...
-
カラムをコピーして、新規カラ...
-
SQLでカラムを追加し、条件に合...
-
ドロップダウンリストの連動し...
-
カラムとコラムの使い分け
-
sql , insert で空行(全ての列...
-
エクセルかワードで家系図を作...
-
MySQLで先頭にカラムを追加
-
AUTO_INCREMENTに0はダメ?
-
日付を一括UPDATE
-
DBエラーの意味
-
SQLで、行ごとのとある要素を比...
-
ROUND関数で、四捨五入ができな...
-
SQLについて教えて下さい。 SEL...
おすすめ情報
リンクありがとうございます。
RANK関数を用い、PARTITIONで日付と科目の2つを指定することでできそうです。
助かりました。