MariaDBでSQLクエリをもっと効率的に!FLOOR関数によるスマートな記述テクニック
MariaDBのFLOOR関数は、引数として渡された数値を、小数点以下を切り捨てた最大の整数を返します。つまり、小数点以下の部分を切り捨てて、最も近い整数を取得します。
構文
FLOOR(数値)
引数
数値
: 計算対象となる数値
戻り値
- 数値: 小数点以下を切り捨てた最大の整数
使い方
FLOOR関数は、様々な場面で役立ちます。以下に、具体的な使用例をいくつか紹介します。
例1:数値の切り捨て
SELECT FLOOR(12.34);
このクエリは、12.34
の小数点以下を切り捨て、12
を返します。
例2:小数点以下の桁数による切り捨て
SELECT FLOOR(12.3456 * 100) / 100;
このクエリは、12.3456
を100倍し、小数点以下第2位まで切り捨てて、12.34
を返します。
例3:日付の切り捨て
SELECT FLOOR(DATE('2023-10-05 14:23:56'));
このクエリは、2023-10-05 14:23:56
の日付部分を切り捨てて、2023-10-05
を返します。
注意事項
- FLOOR関数は、引数としてNULLを渡された場合、NULLを返します。
- FLOOR関数は、引数として渡された数値の種類によって、戻り値の型が異なります。
- 整数の場合:整数型の値を返します。
- 浮動小数点の場合:浮動小数点型の値を返します。
- FLOOR関数とCEILING関数は、さまざまな数学関数と組み合わせて使用することができます。
- MariaDBには、FLOOR関数と同様に動作するCEILING関数もあります。CEILING関数は、引数として渡された数値を、小数点以下を切り上げて最も近い整数を返します。
FLOOR関数は、MariaDBでよく使用される関数の一つです。小数点以下の部分を切り捨てて、最も近い整数を取得したい場合に役立ちます。構文はシンプルで、様々な場面で活用できます。
SELECT
SUM(売上金額) AS 合計売上,
AVG(売上金額) AS 平均売上
FROM 売上データ
WHERE 売上日 >= '2023-01-01' AND 売上日 <= '2023-12-31';
例2:小数点以下の桁数による合計金額の切り捨て
SELECT
ROUND(SUM(売上金額) / 100, 2) AS 合計売上_切り捨て
FROM 売上データ
WHERE 売上日 >= '2023-01-01' AND 売上日 <= '2023-12-31';
SELECT
AVG(年齢) AS 平均年齢,
SUM(CASE WHEN 年齢 < 30 THEN 1 ELSE 0 END) AS 30歳未満人数,
SUM(CASE WHEN 年齢 >= 30 THEN 1 ELSE 0 END) AS 30歳以上人数
FROM 顧客データ;
MariaDBのFLOOR関数には、状況に応じて以下の代替手段が考えられます。
CEILING関数
- 例
CEILING(12.34) = 13
- 構文
CEILING(数値)
- 用途
引数を小数点以下で切り上げ、最も近い整数に変換します。
ROUND関数
- 例
ROUND(12.34, 1) = 12.3
- 構文
ROUND(数値, 桁数)
- 用途
引数を指定した桁数で四捨五入します。
CAST関数と整数リテラル
- 例
CAST(12.34 AS INTEGER) = 12
または12.34 | 0 = 12
- 構文
CAST(数値 AS INTEGER)
または数値 | 0
- 用途
引数を整数に変換してから、小数点以下の部分を切り捨てます。
CASE式
- 構文
- 用途
条件に応じて、引数を整数に変換します。
SELECT
CASE WHEN 小数点以下(数値) = 0 THEN 数値
ELSE FLOOR(数値)
END AS 切り捨て結果
FROM ...;
- 例
上記のクエリは、引数が整数の場合にはそのまま返 し、そうでない場合はFLOOR関数で切り捨てた値を返します。
選択ガイド
状況に応じて、適切な代替手段を選択することが重要です。
- 条件に応じて処理を分けたい場合
CASE式を使用します。 - 引数を単純に整数に変換したい場合
CAST関数または整数リテラルを使用します。 - 小数点以下を指定の桁数で四捨五入したい場合
ROUND関数を使用します。 - 小数点以下を切り上げたい場合
CEILING関数を使用します。
- どの代替手段を選択するかは、パフォーマンス、可読性、メンテナンス性などを考慮する必要があります。
- 上記以外にも、状況によっては独自のカスタム関数を作成することもできます。