算術演算とエイリアス
算術演算とエイリアス とは
SQLでの算術演算と、結果を見やすくするエイリアスの使い方を、SQL操作を通して実践的に学びます。本レッスンでは、算術演算とエイリアス の基本から実際の使いどころまでを整理し、現場で迷わず使える形に落とし込みます。
なぜ重要か
実務で SQL を書くとき、テーブルに保存されている値そのままを取り出すことは意外と少なく、ほとんどの場面で何らかの計算が入ります。たとえば「税込み価格」「在庫金額 (= 単価 × 在庫数)」「割引後の販売価格」「会員ランクごとの還元ポイント」などです。これらをアプリケーション側で計算するのも可能ですが、SQL なら 1 行で書けて、さらに集計やフィルタにそのまま使えるため強力です。さらに計算結果の列に名前を付ける AS (エイリアス) を組み合わせると、レポートやダッシュボードに直接渡せる結果テーブルが作れます。
このレッスンでは 算術演算子 + - * / % の基本、文字列との連結、AS による列・テーブルへの別名付け、整数除算と少数の落とし穴を学びます。
算術演算子の基本
基本構文は次のとおりです。
SQL クエリ
SELECT
id,
price,
stock,
price * stock AS inventory_value,
price * 1.10 AS price_with_tax,
ROUND(price * 0.8) AS sale_price
FROM products;使える演算子は次の通りです。
+加算、-減算、*乗算、/除算、%剰余()で優先順位を制御- 数値と NULL の演算は NULL になる (例えば
100 + NULL = NULL)
AS で別名を付ける
計算列や見にくい列名は AS でリネームすると分かりやすくなります。
SQL クエリ
SELECT
p.name AS product_name,
p.price * 1.10 AS price_with_tax
FROM products AS p
ORDER BY price_with_tax DESC;AS は省略しても動きますが、付けたほうがコードの意図が明確です。テーブル名にも別名を付けられるので、JOIN を書くときの定番テクです。
処理イメージ
算術演算は SELECT 句で評価されるので、行が出力される直前に列ごとに計算されます。
だから ORDER BY 句にはエイリアス名を書けますが、WHERE 句にはエイリアスは書けません (一部 DB を除く)。WHERE で同じ計算を使いたいときは式を書き直すか、サブクエリでくるみます。
代表例 1 在庫金額の計算
price × stock で在庫の総額を計算し、降順に並べます。
SQL クエリ
SELECT
name,
price * stock AS inventory_value
FROM products
ORDER BY inventory_value DESC;出力には計算結果がそのまま入るので、レポートに使いやすい形になります。
代表例 2 文字列連結
PostgreSQL や PGlite では文字列の連結は || 演算子を使います (MySQL では CONCAT 関数)。
SQL クエリ
SELECT
name || ' (' || category || ')' AS label
FROM products;結果は「ノートPC (家電)」のように 1 つの文字列になります。CSV エクスポート用の表示名を SQL 側で組み立てるときに便利です。
エイリアス名は
ORDER BYには使えますが、WHERE/GROUP BY/HAVINGではほとんどの DB で使えません。同じ式を書き直すか、サブクエリで包むのが定石です。
整数除算の落とし穴
PostgreSQL や PGlite では整数同士の / は整数のまま返ります。少数が必要なら型を変換します。
SQL クエリ
-- 整数同士は切り捨て
SELECT 7 / 2 AS a; -- 3
-- 片方を実数にすれば実数として計算される
SELECT 7 / 2.0 AS b; -- 3.5
SELECT 7::numeric / 2 AS c; -- 3.5金額を割って消費税や手数料を計算するときは「整数除算で切り捨てになっていないか」を必ず確認しましょう。経理データのバグは数字の桁違いになりやすく、致命的です。
エイリアスを使った可読性アップ
エイリアスはレポートやダッシュボードで「列名がそのまま見出しになる」場面で威力を発揮します。たとえば社内向けレポートを作るときに、price * stock のような式名のままだとユーザに伝わりません。AS 在庫金額 のように日本語名を付けると、出力テーブルがそのままビジネス資料として使えます。Cloud SQL や BigQuery などの BI ツールに渡す場合も、SQL 側でエイリアスを整えておくと連携が楽です。
まとめ
- 算術演算子は
+ - * / %。優先順位は()で制御 - 数値と NULL の演算結果は NULL
ASで列・テーブルに別名を付けるとレポートが見やすくなる- エイリアスは ORDER BY では使えるが WHERE では使えない
- PostgreSQL の整数同士の
/は切り捨て。少数が欲しいなら型を変える - BI ツール連携やレポート出力では SQL 側でエイリアスを整える
次のレッスン
次は CASE式で条件分岐 です。CASE式を使ってSQLで条件分岐を実装し、柔軟なデータ処理を体験します。
事前確認 — 進む前に次の 3 つができることを確認しましょう。
- 算術とエイリアス の要点を自分の言葉で説明できる
- このレッスンの最小コード (または操作手順) を見ずに書ける
- 練習問題やクイズで間違えた箇所を読み直して理解した
理解度チェック (30 秒)
Q. 算術とエイリアス とは何か、1 文で説明してください。
A. 本文の「このレッスンで分かること」または冒頭の説明文を見直し、自分の言葉で要約できれば OK。詰まったら本レッスンの最初の H2 セクションを読み返してみましょう。
関連レッスン
テーブル構造
schema.sql
CREATE TABLE products (
id INT PRIMARY KEY,
name VARCHAR(50) NOT NULL,
category VARCHAR(30) NOT NULL,
price INT NOT NULL,
stock INT NOT NULL
);
INSERT INTO products (id, name, category, price, stock) VALUES
(1, 'ノートPC', '家電', 128000, 5),
(2, 'マウス', '家電', 2980, 30),
(3, 'キーボード', '家電', 6800, 12),
(4, '小説A', '書籍', 1800, 50),
(5, '小説B', '書籍', 2200, 20);期待される出力
| name | inventory_value |
|---|---|
| ノートPC | 640000 |
| 小説A | 90000 |
| マウス | 89400 |
| キーボード | 81600 |
| 小説B | 44000 |