MIN¶
expr
内の記録の最小値を返します。すべてのレコードが NULLでない限り、NULL 値は無視されます。その場合、 NULL 値が返されます。
構文¶
集計関数
MIN( <expr> )
ウィンドウ関数
MIN( <expr> ) [ OVER ( [ PARTITION BY <expr1> ] [ ORDER BY <expr2> [ <window_frame> ] ] ) ]
window_frame
構文の詳細については、 ウィンドウフレームの構文と使用法 をご参照ください。
戻り値¶
返される値のデータ型は、入力値のデータ型と同じです。
使用上の注意¶
他のシステムとの互換性を保つために、関数の引数として DISTINCT キーワードを指定することができますが、これは何の効果もありません。
関数がウィンドウ関数として呼び出される場合、ウィンドウにはオプションの
window_frame
を含めることができます。window_frame
(累積またはスライド)は、合計値が返されるウィンドウ内の行のサブセットを指定します。window_frame
が指定されていない場合、デフォルトは次の累積ウィンドウフレームです(ウィンドウ関数の ANSI 標準に従う)。RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
構文や例を含むウィンドウフレームの詳細については、 ウィンドウフレームの構文と使用法 をご参照ください。
照合の詳細¶
The comparisons follow the collation based on the input arguments' collations and precedences.
The collation of the result is the same as the collation of the input.
例¶
次の例は、MIN 関数の使用方法を説明しています。
テーブルとデータを作成します。
CREATE OR REPLACE TABLE sample_table(k CHAR(4), d CHAR(4)); INSERT INTO sample_table VALUES ('1', '1'), ('1', '5'), ('1', '3'), ('2', '2'), ('2', NULL), ('3', NULL), (NULL, '7'), (NULL, '1');データを表示します。
SELECT k, d FROM sample_table ORDER BY k, d;+------+------+ | K | D | |------+------| | 1 | 1 | | 1 | 3 | | 1 | 5 | | 2 | 2 | | 2 | NULL | | 3 | NULL | | NULL | 1 | | NULL | 7 | +------+------+MIN 関数を使用して、
d
という名前の列で最小値を取得します。SELECT MIN(d) FROM sample_table;+--------+ | MIN(D) | |--------| | 1 | +--------+GROUPBY 句を MIN 関数と組み合わせて、各グループの最小値を取得します(各グループは列
k
の値に基づいています)。SELECT k, MIN(d) FROM sample_table GROUP BY k ORDER BY k;+------+--------+ | K | MIN(D) | |------+--------| | 1 | 1 | | 2 | 2 | | 3 | NULL | | NULL | 1 | +------+--------+PARTITIONBY 句を使用して、
k
の値に基づいてデータをグループに分けます。これは GROUPBY を使用した場合と似ていますが、同一ではありません。特に、 GROUPBY はグループごとに1つの出力行を生成し、 PARTITIONBY は入力行ごとに1つの出力行を生成します。SELECT k, d, MIN(d) OVER (PARTITION BY k) FROM sample_table ORDER BY k, d;+------+------+------------------------------+ | K | D | MIN(D) OVER (PARTITION BY K) | |------+------+------------------------------| | 1 | 1 | 1 | | 1 | 3 | 1 | | 1 | 5 | 1 | | 2 | 2 | 2 | | 2 | NULL | 2 | | 3 | NULL | NULL | | NULL | 1 | 1 | | NULL | 7 | 1 | +------+------+------------------------------+ウィンドウ ORDERBY 句を使用して、2行幅のスライディングウィンドウを作成し、そのウィンドウ内で最小値を出力します。(ウィンドウ句の ORDER BY は、ステートメントレベルの ORDER BY とは異なります)この例では単一のパーティションを使用しているため、OVER()句にPARTITION BY句はありません。
SELECT k, d, MIN(d) OVER (ORDER BY k, d ROWS BETWEEN 1 PRECEDING AND CURRENT ROW) FROM sample_table ORDER BY k, d;+------+------+----------------------------------------------------------------------+ | K | D | MIN(D) OVER (ORDER BY K, D ROWS BETWEEN 1 PRECEDING AND CURRENT ROW) | |------+------+----------------------------------------------------------------------| | 1 | 1 | 1 | | 1 | 3 | 1 | | 1 | 5 | 3 | | 2 | 2 | 2 | | 2 | NULL | 2 | | 3 | NULL | NULL | | NULL | 1 | 1 | | NULL | 7 | 1 | +------+------+----------------------------------------------------------------------+