SQL - 数値関数

こんにちは、未来のSQL魔術師たち!今日は、SQLの数値関数という魔法の世界に飛び込みます。コードを書いたことがない人も心配しないでください - この冒険のなかであなたの親切なガイドとなります。このチュートリアルの終わりまでには、プロのように数字を操ることができるようになるでしょう!

SQL - Numeric Functions

SQL 数値関数とは?

自分が厨房のシェフだと思ってください。材料を切ったり、スライスしたり、カットしたりする様々なツールがあります。SQLの数値関数は、その厨房ツールのようなものです。データベース内の数値データに対して計算や変換を行う手助けをしてくれます。

一般的なSQL数値関数

では、SQLで最も役立つ数値関数のいくつかを見てみましょう。以下の便利な表を参考にしてください:

関数 説明
ABS() 絶対値を返します ABS(-5) = 5
ROUND() 指定された小数桁数に丸めます ROUND(3.14159, 2) = 3.14
CEILING() 指定された数より小さいか等しい最大の整数を返します CEILING(3.1) = 4
FLOOR() 指定された数より大きいか等しい最小の整数を返します FLOOR(3.9) = 3
POWER() 指定された数を指定された冪にします POWER(2, 3) = 8
SQRT() 数の平方根を返します SQRT(16) = 4

これらの関数のそれぞれを、実用的な例とともに詳しく見ていきましょう。

ABS() 関数

ABS()関数は数の絶対値を返します。簡単に言えば、もしあればマイナス符号を取り除きます。

SELECT ABS(-10) AS absolute_value;

このクエリは以下の結果を返します:

absolute_value
--------------
10

たとえば、二つの温度の差を計算しているとき、その差が正か負か気にしないで、その大小だけを知りたい場合があります。そのようなときにABS()が役立ちます!

ROUND() 関数

ROUND()はレストランでいつも請求書を丸めてくれる友達のようです。指定された小数桁数に数を丸めます。

SELECT ROUND(3.14159, 2) AS rounded_pi;

結果:

rounded_pi
----------
3.14

この関数は通貨を扱うときや、大きな数を報告する際に簡略化する際に非常に有用です。

CEILING() と FLOOR() 関数

これらの関数は数の世界の努力家と凡庸者のようなものです。CEILING()は常に最も近い整数にアップしますが、FLOOR()は常に最も近い整数ダウンします。

SELECT CEILING(3.1) AS ceiling_value, FLOOR(3.9) AS floor_value;

結果:

ceiling_value | floor_value
--------------+------------
4             | 3

CEILING()は楽観主義者(常に上を見る)であり、FLOOR()は悲観主義者(常に下を見る)だと思ってください。計算の際にこれらを賢く使ってください!

POWER() 関数

POWER()はあなたの数にスーパーパワーを与えます!指定された冪に数を持ち上げます。

SELECT POWER(2, 3) AS two_cubed;

結果:

two_cubed
---------
8

この関数は科学計算や複利の計算に非常に有用です(あなたの未来の自分はこれを学んでくれて感謝するでしょう!)。

SQRT() 関数

SQRT()は平方根関数です。自分自身をかけることで元の数を返す数を見つけるようなものです。

SELECT SQRT(16) AS square_root;

結果:

square_root
-----------
4

面白い事実:古代バビロニア人は、コンピュータが今日行う方法に驚くほど似ている平方根の計算方法を使っていました!

すべてを合わせて

これらの関数を個別に学んだ現在、実際のシナリオでどのように組み合わせて使うかを見てみましょう。小規模企業の販売データを分析しているとします。

CREATE TABLE sales (
id INT PRIMARY KEY,
product_name VARCHAR(50),
sale_amount DECIMAL(10, 2),
discount DECIMAL(5, 2)
);

INSERT INTO sales VALUES
(1, 'Widget A', 100.00, 10.50),
(2, 'Gadget B', 75.25, 5.00),
(3, 'Doohickey C', 50.75, 2.25);

SELECT
product_name,
sale_amount,
discount,
ROUND(sale_amount - discount, 2) AS net_sale,
CEILING(POWER(net_sale, 1.05)) AS loyalty_points
FROM
sales;

このクエリは、割引後の売上金額を計算し、その少し増やした金額に基づいて忠诚度ポイントを割り当てます。以下に分解します:

  1. テーブルを作成し、サンプルデータをインサートします。
  2. ROUND()を使って割引後の売上金額を2桁に丸めます。
  3. POWER()を使って売上金額を少し増やします(1.05倍にします)。
  4. 最後に、CEILING()を使って忠诚度ポイントを最も近い整数にアップします。

結果は以下のようになります:

product_name | sale_amount | discount | net_sale | loyalty_points
-------------+-------------+----------+----------+----------------
Widget A     | 100.00      | 10.50    | 89.50    | 115
Gadget B     | 75.25       | 5.00     | 70.25    | 89
Doohickey C  | 50.75       | 2.25     | 48.50    | 60

結論

おめでとうございます!あなたはSQLの数値関数の世界への第一歩を踏み出しました。実践は完璧を生みます。これらの関数を自分のデータや例で試してみてください。間違えを恐れずに - それが学びです!

私が教鞭を取る年月の中で、SQLを試行錯誤し、楽しみながら学ぶ学生たちは、本当にマスターするものだと思っています。それでは、計算を続け、学びを続け、そしてSQLを楽しみましょう!誰しもが、難しいパズルを解いたり、美しい芸術作品を創造したりする satisfactionを感じるかもしれません。

コードを続け、学びを続け、そしてSQLを楽しみましょう!

Credits: Image by storyset