
お世話になります。Oracle初心者です。RANK関数による順位付けについて悩み、検索してもわからず困っております。
次のような表tbがあります。
数値,順
70
10
30
この「順」のカラムに順位を付けて
数値,順
70,3
10,1
30,2
としようとしています。SELECTなら
SELECT 数値,rank() over (order by 数値 desc) from tb;
が成功します。これでupdateする場合、
(rank() over (order by 数値 desc))をした値を
update tb set 順=
とすればよいと思うのですが、うまくいきません。
PL/SQLを使わず、SQLでRANK関数を使って順位付けするにはどのようにしたらよろしいでしょうか。
勉強不足だと思い、申し訳なく思います。何卒よろしくお願いいたします。
No.1ベストアンサー
- 回答日時:
SET句でRANK関数を使うことはできません。
(使うことができるRDBMSもあるようです)
UPDATE文でRANK関数を使用するときは、少し面倒なことになります。
update tb set 順 = (
select t2.順 from (
select 数値, rank() over (order by 数値 desc) as 順 from tb
) t2
where t2.数値 = tb.数値
);
# 例のテーブル構成では、数値が重複している場合、
# 上記UPDATE文は失敗します。
# 実際には主キーがあるでしょうから
# その点は工夫してください。
# ちなみに下記UPDATE文なら重複していてもOKです。
RANK関数を使用しない方法もあります。
update tb set 順 = (
select count(t2.数値) + 1 from tb t2
where t2.数値 > tb.数値
);
# 例のSQL文と処理結果が合致しません(降順と昇順)。
# とりあえず降順で処理しています。
dda167様 さっそくのご回答ありがとうございました。
update tb set 順 = (
select count(t2.数値) + 1 from tb t2
where t2.数値 > tb.数値
); で処理することができました。
参考になり、感謝しております。
RANK()関数については、私の知識ではすぐには理解できそうもないので、勉強してみます。
本当にありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP 【スプレッドシート】順位のつけ方 2 2022/08/17 13:27
- MySQL SQLです。こんな感じですか?あってますか? うまくいきません教えてくださいお願いします 1 2023/07/08 15:27
- MySQL うまくいきません教えてくださいお願いしますSQLです。クエリ構文です。 1 2023/07/07 12:39
- Excel(エクセル) エクセル、日々の集計整理方法。(再送です。) 5 2022/10/02 00:19
- 日本語 順位と平均の意味に関する疑問 5 2023/04/15 13:25
- MySQL PhpMyAdminで作成して実行せよ。 東京23区を、皇居を中心とした4つのエリア(南東, 南西, 1 2023/06/11 11:58
- MySQL SQL任意に並び替えをしたい 2 2023/08/28 10:47
- Excel(エクセル) DATE関数で指定する「日」のセルが関数の場合の対処法 5 2022/09/14 15:46
- Excel(エクセル) Excel2016 行間を詰めたい&同じカテゴリなら上位2つだけを表示したい 5 2022/06/03 12:19
- Visual Basic(VBA) Excel VBA 複数選択したリストボックスからテキストボックスに転記したいです。 3 2023/03/19 18:31
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
バッチファイルで複数フォルダ...
-
Oracle で文字列からタイムスリ...
-
Object Browser相関タブの見方...
-
SQLについての質問
-
SQLについて教えて下さい。 主...
-
SQLで今日の日付でWhereしたい
-
秋葉原でWindowsを買ったのです...
-
オラクル12C_SQLPlusで実行す...
-
sqlで質問です。 Aテーブルは店...
-
SQLの中上級者へのレベルアップ...
-
SELECTによる表の変換方法を教...
-
開発対象となるアプリケーショ...
-
質問です。 下記のテーブルとデ...
-
Oracleですがsqlで質問です。 ...
-
sqlで質問です。 Aテーブルの登...
-
sqlで質問です。 Aテーブルの情...
-
SQLの書き方について
-
sqlで質問です。 idを元にidに...
-
oracleで 10,20, 30, というデ...
-
索引作成について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
副問合せにLIKE文を使う方法は...
-
データベースのカラムの型がCHA...
-
バッチファイルで複数フォルダ...
-
batファイルでのSQL(oracle)...
-
64bit端末でのOLEDB接続に関して
-
10営業日前の日付を取得したい...
-
osqleditについて
-
update文で質問です。 下記の条...
-
orace SQL文のエラー(ORA-0092...
-
テーブルやカラムの物理名のネ...
-
オラクル12C_SQLPlusで実行す...
-
videopad 無料版 アンインストール
-
SQLの中上級者へのレベルアップ...
-
続.ORACLEのSELECTのソートに...
-
ワークテーブルって何?
-
oracleの直接接続のクライアン...
-
ORA-14452について
-
SQL ブレーク処理について
-
Oracleですがsqlで質問です。 ...
-
oracleで 10,20, 30, というデ...
おすすめ情報