[解決済み] Oracleで上位100行を選択する方法は?
2022-03-16 21:50:17
質問
私の要件は、各クライアントの最新の注文を取得し、次に上位100レコードを取得することです。
私は、各顧客の最新の注文を取得するために、以下のように1つのクエリを書きました。内部クエリは問題なく動作します。しかし、私はその結果に基づいて最初の100を取得する方法がわかりません。
SELECT * FROM (
SELECT id, client_id, ROW_NUMBER() OVER(PARTITION BY client_id ORDER BY create_time DESC) rn
FROM order
) WHERE rn=1
何かアイデアはありますか?ありがとうございます。
解決方法は?
create_timeに注文が作成された時刻が含まれており、最新の注文を持つ100のクライアントが欲しいと仮定すると、以下のようになります。
- 一番内側のクエリにcreate_timeを追加します。
-
で外側のクエリの結果を注文します。
create_time desc
-
を使用して最初の 100 行をフィルタリングする一番外側のクエリを追加します。
ROWNUM
クエリ
SELECT * FROM (
SELECT * FROM (
SELECT
id,
client_id,
create_time,
ROW_NUMBER() OVER(PARTITION BY client_id ORDER BY create_time DESC) rn
FROM order
)
WHERE rn=1
ORDER BY create_time desc
) WHERE rownum <= 100
Oracle 12c用UPDATE
リリース 12.1 で、オラクルは
トップNクエリ
. 新しい
FETCH FIRST...
の構文を使用することもできます。
SELECT * FROM (
SELECT
id,
client_id,
create_time,
ROW_NUMBER() OVER(PARTITION BY client_id ORDER BY create_time DESC) rn
FROM order
)
WHERE rn = 1
ORDER BY create_time desc
FETCH FIRST 100 ROWS ONLY)
関連
-
SQLラーニングノート--オペランドには1つのカラムが必要です。
-
[解決済み] SQLサーバーでNULL = NULLがfalseに評価される理由
-
[解決済み] SQL ServerでSELECTからUPDATEする方法とは?
-
[解決済み] SQL Server で複数行のテキストを 1 つのテキスト文字列に連結する方法
-
[解決済み] SQLのSELECTでIF...THENを実行するにはどうすればよいですか?
-
[解決済み] ...値に挿入する ( SELECT ... FROM ... )
-
[解決済み] Oracleの全テーブルのリストを取得しますか?
-
[解決済み] 最初の行への結合方法
-
[解決済み] SQL Serverで結果をページ分割する最も良い方法は何ですか?
-
[解決済み】Oracleクエリが順序付け後に返す行数を制限するにはどうすればいいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
解決策:java.sql.SQLException: ユーザー ''@'localhost'' (パスワード: YES を使用) のアクセスが拒否されました。
-
MHAの高可用性構成とフェイルオーバー
-
executeQuery()ソリューションでデータ操作文を発行できない。
-
[解決済み] Oracle SELECT TOP 10 レコード [重複]の場合
-
[解決済み] SQL Server FOR EACH ループ
-
[解決済み] SQLのカラム名があいまいな場合のクエリエラー
-
[解決済み] SQL Serverには、.NETのMath.Maxのような2つの値を取るMax関数はありますか?
-
[解決済み] VARCHARとCHARの違いは何ですか?
-
[解決済み】Oracleクエリが順序付け後に返す行数を制限するにはどうすればいいですか?
-
[解決済み】Oracleでトップ1を行うには?[重複しています]