【ORACLE】MAXやMINを使わずに最大値と最小値を取得するSQL

ここでは、ORACLEデータベースのSQLで、表の列の値の最小値や最大値を、MAXやMIN関数を使わずに取得する方法を紹介します。

テーブルの列の最大値や最小値は、DBA_TAB_COLUMNSを参照することで確認できます。

DBA_TAB_COLUMNSを参照する利点

DBA_TAB_COLUMNSを参照する利点は2つあります。

1.素早く確認できる
 MAXやMINといった集計関数は使わず、既に値が保持されているので高速に確認できます。

2.実テーブルにアクセス負荷がかからない
 実テーブルをSELECTしないので、アクセス負荷を気にすることはありません。

以上の2点です。

DBA_TAB_COLUMNSを参照するSQLサンプル

DBA_TAB_COLUMNSのHIGH_VALUE列に最大値、LOW_VALUE列に最小値を持っているのでSELECT文で参照します。

次のSQLでは、DBA_TAB_COLUMNSでユーザ名、テーブル名、列名を指定して、最大値と最小値を参照しています。

select
    a.high_value
    ,a.low_value
from
    dba_tab_columns a
where
    a.owner = 'user1' --ユーザ名
    and table_name = 'table1' --テーブル名
    and column_name = 'col1' --列名
;

DBA_TAB_COLUMNSには他にも、NUM_DISTINCT列に一意な値の数、NUM_NULLS列にNULL値の数を持っているのでぜひ使ってみてください。

まとめ

MAXやMIN関数を使わずに最大値や最小値を確認するには、DBA_TAB_COLUMNSを参照します。

DBA_TAB_COLUMNSのHIGH_VALUE列、LOW_VALUE列をSELECT文で参照することで取得できます。

この他にも便利なSQLがあるのでぜひ使ってみてください。
【SQL】スキーマ(ユーザ)の一覧を確認する方法
【SQL】テーブルの一覧を確認する方法
【SQL】データ・レコード件数の多いテーブルを確認する方法
【SQL】パーティションテーブルの一覧を確認する方法
【SQL】表のパーティションごとの件数を確認する方法
【SQL】パーティションテーブルの設定内容を確認する方法