SQL関数とは
DBMSの基本機能
SQLでは関数はデータベース内でデータ操作、計算、変換するための特定の機能です。関数はDBMSに組み込まれており、SQLで使用することができます。
- 利用できる関数の種類はDBMSによって若干異なりますが、基本は同じです
関数の分類
SQLの関数は大きく分けて2つのタイプに分類されます。
集約関数(Aggregate Functions)
Aggregate Functionsは複数の行からデータをまとめて計算し、単一の結果を返します。集約関数は通常、GROUP BYを利用してグループごとの集計結果を取得するために利用されます。
- SUM
- AVG
- COUNT
- MAX、MIN など
単一行関数(Scalar Functions)
Scalar Functionsは単一の入力値を受け取り、1つの結果を返します。文字列操作、数値計算、日時処理など、様々な目的で使用されます。
- ROUND
- DATE
- UPPER, LOWER
- CONCAT
- SUBSTRING など
集約関数
COUNT
COUNT は、レコードの件数を取得します。
COUNT(カラム)
AS
ASを利用すると、カラム名をカスタマイズできます。
COUNT(カラム) AS 別カラム名
「items」テーブルのレコード数
「items」テーブルのレコード数を取得します。
SELECT COUNT(id) AS item_count FROM items;
結果例
item_count
3
SUM()
SUM() は、カラムの合計値を取得します。
SUM(カラム)
「price」の合計値
SQL
SELECT SUM(price) AS price_sum FROM items;
結果例
price_sum
1050
AVG
AVG は、カラムの平均値を取得します。
AVG(カラム)
「price」の平均値
「items」テーブルのレコード数を取得します。
SQL
SELECT AVG(price) AS average_price FROM items;
結果例
average_price
350.0000
MAX()、MIN()
MAX()、MIN() は、カラムの最大値、最小値を取得します。
「price」の最大値、最小値
「items」テーブルのレコード数を取得します。
SQL
SELECT MAX(price) AS max_price, MIN(price) AS min_price FROM items;
結果例
max_price min_price
400 300
単一行関数
カラムの計算
税抜価格(少数表示)
税抜価格は「price」を「1.1」で割った値になりますが、SQLではカラムを計算して表示することができます。
SQL
SELECT price / 1.1 AS price_without_tax FROM items;
結果例
price_without_tax
272.7273
318.1818
363.6364
ROUND
ROUND は数値を四捨五入します。桁数を指定しない場合は、整数となります。
SQL
ROUND(数値, 桁数)
税抜価格(四捨五入)
税抜価格を四捨五入します。
SQL
SELECT ROUND(price / 1.1) AS price_without_tax FROM items;
結果例
price_without_tax
273
318
364
CONCAT
CONCATは文字列を連結します。
CONCAT(文字1, 文字2, ...)
「code」と「name」の連結
「items」テーブルの「code」と「name」を「 : 」で連結した例です。
SQL
SELECT CONCAT(code, ' : ', name) AS code_and_name FROM items;
結果例
code_and_name
D00001 : コーヒー
D00002 : 紅茶
D00003 : ほうじ茶
UPPER, LOWER
UPPER、LOWERは、アルファベットを大文字、小文字に変換します。
UPPER(文字1)
LOWER(文字1)
「code」を小文字に変換
「items」テーブルの「code」を小文字に変換した例です。
SQL
SELECT LOWER(code) FROM items;
大文字「D」が、小文字「d」に変換されました。
結果例
LOWER(code)
d00001
d00002
d00003
SUBSTRING
SUBSTRINGは、文字の一部分を取得します。第2引数に「開始位置」第3引数に「文字の長さ」を指定します。
SUBSTRING(文字, 開始位置 ,長さ)
「code」を小文字に変換
「items」テーブルの「code」を小文字に変換した例です。
SQL
SELECT SUBSTRING(code, 2, 5) AS number FROM items;
結果例
number
00001
00002
00003
CAST
CASTはカラムデータを、指定のデータ型に変換(キャスト)します。
CAST(文字 AS データ型)
商品コードのの数値部分を取り出し、SIGNEDでキャストします。
SQL
SELECT CAST(SUBSTRING(code, 2, 5) AS SIGNED) AS number FROM items;
結果例
number
1
2
3