便利な数学関数
ABS、MOD、POWERなどを学びます。
「便利な数学関数」はCoddyKit上の無料SQL Academyレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはSQL Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 SQL Academyコースには全4レッスンが含まれています。
数学関数が重要な理由
SQLはテキストの保存と取得だけでなく、数値計算にも使える強力なツールです。組み込みの数学関数を使えば、クエリから離れずに絶対値、余り、累乗などを計算できます。
このレッスンでは、SQLで特に役立つ数値関数である ABS、MOD、POWER、SQRT、ROUND、CEIL、FLOOR、SIGNについて学びます。
ABS — 絶対値
ABS(n) は、数値の絶対値(負でない値)を返します。負の数は正の数になり、正の数とゼロは変わりません。
方向ではなく、ゼロからの距離を知りたい場合に便利です。たとえば、目標値より上か下かにかかわらず、温度が目標値からどれだけ離れているかを計算できます。
SELECT ABS(-42), -- 42
ABS(15), -- 15
ABS(0); -- 0実際のクエリでABSを使う
引き出し額が負の値として格納されている transactions テーブルを考えてみましょう。ABS を使うと、符号にかかわらずすべての金額を正の数として表示できます。
CREATE TABLE transactions (
id INTEGER,
amount NUMERIC
);
INSERT INTO transactions VALUES (1, 200.00), (2, -50.00), (3, -120.00), (4, 80.00);
SELECT id,
amount,
ABS(amount) AS absolute_amount
FROM transactions;MOD — 除算の余り
MOD(dividend, divisor) は、最初の数を2番目の数で割ったときの余りを返します。多くのプログラミング言語における % 演算子に相当するSQLの機能です。
典型的な用途は、数値が偶数か奇数かを確認することです。MOD(n, 2) = 0 なら偶数、それ以外なら奇数です。
SELECT MOD(10, 3), -- 1 (10 = 3*3 + 1)
MOD(15, 5), -- 0 (15 = 5*3 + 0)
MOD(7, 2); -- 1 (odd number)実際のクエリでMODを使う
MOD は WHERE 句の中で使って、行を絞り込むことができます。ここでは、id が偶数の注文だけを選択しています。
CREATE TABLE orders (
id INTEGER,
total NUMERIC
);
INSERT INTO orders VALUES (1, 99.99), (2, 45.00), (3, 130.50), (4, 22.00), (5, 75.00), (6, 60.00);
SELECT id, total
FROM orders
WHERE MOD(id, 2) = 0;POWER — 指数で累乗する
POWER(base, exponent) は、数値を指定したべき乗にします。POWER(2, 10) は1024を返し、POWER(9, 0.5) は3(9の平方根)を返します。
この関数は、複利計算や面積の公式など、指数的な増加を扱うあらゆる場面で役立ちます。
SELECT POWER(2, 10), -- 1024
POWER(3, 3), -- 27
POWER(9, 0.5); -- 3 (square root)SQRT — 平方根
SQRT(n) は、POWER(n, 0.5) の便利な短縮形です。負でない数値の平方根を返します。
たとえば、正方形の土地の面積を格納している場合、SQRT(area) で一辺の長さを求められます。
SELECT SQRT(25), -- 5
SQRT(2), -- 1.4142...
SQRT(100); -- 10ROUND — 小数点以下N桁に丸める
ROUND(n, d) は、n を小数点以下 d 桁に丸めます。d を省略するか0を指定すると、結果は整数になります。d に負の値を指定すると、小数点の左側の桁で丸めます。
SELECT ROUND(3.14159, 2), -- 3.14
ROUND(2.555, 2), -- 2.56
ROUND(1234.5, -2), -- 1200
ROUND(9.9); -- 10CEILとFLOOR — 常に切り上げまたは切り下げる
CEIL(n)(CEILING とも表記します)は常に切り上げて最も近い整数にし、FLOOR(n) は常に切り下げます。
行を印刷するのに必要なページ数など、何かの最小数が必要な場合は CEIL を使います。経過した完全な週数など、値を超えない最大の整数が必要な場合は FLOOR を使います。
SELECT CEIL(4.1), -- 5
CEIL(-4.1), -- -4
FLOOR(4.9), -- 4
FLOOR(-4.9); -- -5SIGN — 数値の符号
SIGN(n) は、数値が正の場合は 1、負の場合は -1、ゼロの場合は 0 を返します。CASE 式を書かずに数値をすばやく分類できる方法です。
SELECT SIGN(42), -- 1
SIGN(-7), -- -1
SIGN(0); -- 0数学関数を組み合わせる
数学関数は、1つの式の中で自由に組み合わせることができます。以下の例では、ROUND と POWER を一緒に使って単純なローンの月々の支払額を計算し、これらの関数が実際の業務ロジックでどのように補完し合うかを示しています。
-- Monthly payment formula: P * r / (1 - (1+r)^-n)
-- P=10000, annual rate 6% (r=0.005/month), n=24 months
SELECT ROUND(
10000.0 * 0.005 / (1 - POWER(1 + 0.005, -24)),
2
) AS monthly_payment;確認問題
SQLの数学関数についての理解を確認しましょう。
レッスンのまとめ
よくできました。このレッスンで学んだSQLの数学関数をまとめます。
- ABS(n) — 絶対値(符号を取り除く)
- MOD(a, b) — a を b で割った余り
- POWER(base, exp) — 数値をべき乗する
- SQRT(n) — 平方根
- ROUND(n, d) — 小数点以下 d 桁に丸める
- CEIL(n) — 常に次の整数へ切り上げる
- FLOOR(n) — 常に前の整数へ切り下げる
- SIGN(n) — 数値の符号に応じて1、-1、または0を返す
これらの関数は主要なSQLデータベースすべてで使用でき、入れ子にしたり組み合わせたりすることで、複雑な数値ロジックをクエリ内で直接処理できます。
よくある質問
「便利な数学関数」レッスンは無料ですか?
はい。「便利な数学関数」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、SQL Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 SQL Academyコースには全4レッスンが含まれています。
「便利な数学関数」で何を学びますか?
ABS、MOD、POWERなどを学びます。 ブラウザで直接実行するハンズオンコードでSQL Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
SQL Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのSQL Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。
「便利な数学関数」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このSQL Academyレッスンでコードを書いて実行できますか?
はい。すべてのSQL Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。