[解決済み] Oracle SELECT TOP 10 レコード [重複]の場合
2022-03-01 04:24:36
質問
Oracle の SQL 文で大きな問題があります。他のselect文からリストにないSTORAGE_DBで並べたTOP10レコードを選択したいのですが。
これは、すべてのレコードに対して正常に動作します。
SELECT DISTINCT
APP_ID,
NAME,
STORAGE_GB,
HISTORY_CREATED,
TO_CHAR(HISTORY_DATE, 'DD.MM.YYYY') AS HISTORY_DATE
FROM HISTORY WHERE
STORAGE_GB IS NOT NULL AND
APP_ID NOT IN (SELECT APP_ID
FROM HISTORY
WHERE TO_CHAR(HISTORY_DATE, 'DD.MM.YYYY') = '06.02.2009')
しかし
AND ROWNUM <= 10
ORDER BY STORAGE_GB DESC
ランダムレコードのようなものが表示されます。注文の前にリミットがかかっているからだと思います。
どなたか良い解決策をご存知でしょうか?他の問題:このクエリは非常に遅いです(10K +レコード)。
解決方法は?
以下のように、現在のクエリをサブクエリに入れる必要があります。
SELECT * FROM (
SELECT DISTINCT
APP_ID,
NAME,
STORAGE_GB,
HISTORY_CREATED,
TO_CHAR(HISTORY_DATE, 'DD.MM.YYYY') AS HISTORY_DATE
FROM HISTORY WHERE
STORAGE_GB IS NOT NULL AND
APP_ID NOT IN (SELECT APP_ID FROM HISTORY WHERE TO_CHAR(HISTORY_DATE, 'DD.MM.YYYY') ='06.02.2009')
ORDER BY STORAGE_GB DESC )
WHERE ROWNUM <= 10
オラクルが適用
ローヌム
を返した後、その結果に
結果が返された後にフィルタリングする必要があるので、サブクエリが必要です。また
RANK()
関数で上位からN個の結果を得ることができます。
パフォーマンスを上げるには
NOT EXISTS
の代わりに
NOT IN
. 参照
これ
をご覧ください。
関連
-
[解決済み】「パラメータ@objnameがあいまいか、主張する@objtype(COLUMN)が間違っています」を解決するにはどうすればよいですか?[重複している]。
-
[解決済み】 "指定された集約関数を含まないクエリを実行しようとしました。"
-
[解決済み] Varchar は Sum 演算子では無効です。
-
[解決済み] ORA-01735: 無効な ALTER TABLE オプション - ヒキガエル
-
[解決済み] SQL ServerでSELECTからUPDATEする方法とは?
-
[解決済み] 各GROUP BYグループの最初の行を選択しますか?
-
[解決済み] SQLのSELECTでIF...THENを実行するにはどうすればよいですか?
-
[解決済み] ...値に挿入する ( SELECT ... FROM ... )
-
[解決済み] Oracleの全テーブルのリストを取得しますか?
-
[解決済み】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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】CREATE VIEW は、バッチ内の唯一のステートメントでなければなりません。
-
[解決済み】SQL Server サブクエリが1つ以上の値を返しました。サブクエリが =, !=, <, <= , >, >= に続く場合、これは許可されません。
-
[解決済み】ORA-01791: SELECTされた式ではない
-
[解決済み] ''付近の構文が正しくない
-
[解決済み] pg_restoreです。[archiver] 入力ファイルはテキスト形式のダンプであるように見えます。psql を使用してください。
-
[解決済み] mongoの外部キー?
-
[解決済み] SQLです。最初の出現箇所のみを返す
-
[解決済み] マルチパート識別子をバインドできなかった
-
[解決済み] 1行目4列目(年)の一括読み込みデータ変換エラー(型の不一致または指定したコードページに対して無効な文字)
-
[解決済み】Oracleクエリが順序付け後に返す行数を制限するにはどうすればいいですか?