算術演算子
SQLで加算、減算、乗算、除算を行います。
「算術演算子」はCoddyKit上の無料SQL Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはSQL Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 SQL Academyコースには全4レッスンが含まれています。
SELECT で計算する
SQL は行を取得するだけのものではありません。算術演算子を使って、クエリの中で直接値を計算できます。
このレッスンでは、列やリテラルを使って加算、減算、乗算、除算を行い、結果に名前を付けます。また、PostgreSQL がそれぞれの結果の型をどのように決定するかも学びます。
quantity と unit_price を持つ order_items テーブルを想像してください。アプリケーションコードに触れなくても、明細ごとの合計を計算できます。
SELECT quantity, unit_price, quantity * unit_price AS line_total
FROM order_items;5つの算術演算子
PostgreSQL は一般的な演算子をサポートしています。
+加算-減算*乗算/除算%剰余(余り)
これらは、ほとんどのプログラミング言語と同じように、数値列やリテラルに対して使えます。次のクエリでは、それぞれの演算子の使い方を確認できます。
SELECT
10 + 3 AS sum,
10 - 3 AS difference,
10 * 3 AS product,
10 / 3 AS quotient,
10 % 3 AS remainder;演算子の優先順位
SQL は標準的な算数の優先順位に従います。*、/、% は、+ や - よりも強く結び付きます。
意図を明確にしたり、既定の順序を変更したりするには、括弧を使います。次の2つの式は、結果が大きく異なります。
SELECT
2 + 3 * 4 AS without_parens, -- 14
(2 + 3) * 4 AS with_parens; -- 20割引価格を計算する
よくある実務上の処理として、割引率を適用する方法があります。価格に (1 - discount_rate) を掛けます。
ここで discount_rate は割合として保存されています(0.15 = 15%)。括弧により、掛け算の前に減算が行われることが保証されます。
SELECT
product_id,
price,
discount_rate,
price * (1 - discount_rate) AS final_price
FROM products;複数の列をまたいだ算術演算
オペランドはリテラルである必要はありません。1つの式で複数の列を組み合わせることもできます。
次の例では、販売1件あたりの純利益を計算します。売上から原価を引き、その結果に販売数量を掛けます。
SELECT
sale_id,
(sale_price - cost) * quantity AS profit
FROM sales;AS で結果に名前を付ける
計算した列には、別名を付けない限り ?column? のような自動生成された名前が付きます。読みやすい名前を付けるため、常に AS を使いましょう。
別名を付けると、ツールやレポートでその列をより分かりやすく参照できるようにもなります。
SELECT
base_salary,
base_salary * 0.10 AS bonus,
base_salary + base_salary * 0.10 AS total_pay
FROM employees;WHERE で算術演算を使う
算術演算は SELECT だけでなく、WHERE 句でも使えます。
これは、計算した合計が 100 を超える注文に絞り込みます。ただし、列を計算式で囲むとインデックスが使われなくなる場合があるため、パフォーマンスが重要な場合は、フィルターに単純な列指定を使うことを優先してください。
SELECT order_id, quantity, unit_price
FROM order_items
WHERE quantity * unit_price > 100;結果の型は入力に従う
PostgreSQL はオペランドから結果の型を推測します。整数 + 整数の結果は整数になります。一方、どちらか一方が numeric または float なら、結果もその型になります。
これは特に除算で重要になります。除算については後で詳しく扱います。ここでは、型を混在させると結果の型がより広い型に変換されることに注目してください。
SELECT
pg_typeof(4 + 2) AS int_type, -- integer
pg_typeof(4 + 2.0) AS numeric_type, -- numeric
pg_typeof(4 * 1.5); -- numeric剰余演算子
% は整数除算の余りを返します。「N 行ごと」のような周期的な処理や、値が偶数か奇数かの確認に便利です。
次の例では、% 2 = 0 を使って偶数の product id を持つ商品を見つけます。
SELECT product_id, name
FROM products
WHERE product_id % 2 = 0;算術演算で値を更新する
算術演算は SELECT に限られません。UPDATE で使って、保存されている値を調整することもできます。
これは、あるカテゴリのすべての価格を 5% 引き上げます。右辺の式は行ごとに評価されます。
UPDATE products
SET price = price * 1.05
WHERE category = 'electronics';NULL に注意する
NULL を含む算術演算の結果は、すべて NULL になります。これは、結果が不明だからです。
列に値がない可能性がある場合は、計算する前に COALESCE で囲み、既定値を指定してください。
SELECT
base + NULL AS is_null, -- NULL
base + COALESCE(bonus, 0) AS safe_total
FROM payroll;簡単な確認
PostgreSQL で式 2 + 6 / 2 を評価すると、何になりますか。
まとめ
SQL では、値を直接計算できます。
+ - * / %が基本的な演算子です*、/、%は+や-よりも強く結び付きます。明確にするには括弧を使いますASで計算した列に別名を付けます- 算術演算は
SELECT、WHERE、UPDATEで使えます - 結果の型はオペランドに従い、
NULLのオペランドが1つでもあると結果はNULLになります
次は、これらの数値結果を丸めたり切り捨てたりする方法を学びます。
よくある質問
「算術演算子」レッスンは無料ですか?
はい。「算術演算子」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、SQL Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 SQL Academyコースには全4レッスンが含まれています。
「算術演算子」で何を学びますか?
SQLで加算、減算、乗算、除算を行います。 ブラウザで直接実行するハンズオンコードでSQL Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
SQL Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのSQL Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。
「算術演算子」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このSQL Academyレッスンでコードを書いて実行できますか?
はい。すべてのSQL Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。