$ man sql-functions
SQL 関数リファレンス
関数・演算子を 1 つずつ、実際に流した結果つきで引けます。載せている結果は本物のデータベースに同じ SQL を流して作ったものなので、書いてあるとおりに動きます。
いま 41 項目あります。順に増やしています。
集約関数
ウィンドウ関数
FIRST_VALUE / LAST_VALUE
区切りの中の最初・最後の値を持ってくる。LAST_VALUE は既定のままだと期待どおりに動かない。
LAG / LEAD
並べた中で、1 つ前(LAG)や 1 つ後ろ(LEAD)の行の値を持ってくる。前月比などに使う。
NTH_VALUE
区切りの中の n 番目の値を返す。既定のフレームだと n 番目がまだ見えないことがある。
NTILE
並べた行を、指定した数のグループにできるだけ均等に振り分ける。
PERCENT_RANK / CUME_DIST
順位を 0〜1 の割合で返す。2 つは端の扱いが違う。
RANK / DENSE_RANK
順位を付ける。同じ値には同じ順位が付く。RANK は次の番号が飛び、DENSE_RANK は飛ばない。
ROW_NUMBER
並べた順に 1, 2, 3 … と通し番号を振る。同じ値でも必ず別の番号になる。
SUM() OVER(累計)
集約関数をウィンドウ関数として使う。ORDER BY を付けるかどうかで、累計か総計かが変わる。
文字列関数
CONCAT / ||
文字列をつなぐ。|| は NULL が混じると全体が NULL、CONCAT は NULL を飛ばす。
LENGTH / CHAR_LENGTH
文字列の長さを返す。数えるのは文字数で、バイト数ではない。
LPAD / RPAD
指定した長さになるまで、左(LPAD)や右(RPAD)を埋める。長すぎると切り捨てられる。
POSITION / STRPOS
文字列の中で、指定した文字列が最初に現れる位置を返す。見つからないと 0。
REGEXP_REPLACE
正規表現で置き換える。既定では最初の 1 つしか置き換えない。
REPLACE
文字列の中の指定した文字列を、すべて別の文字列に置き換える。
SPLIT_PART
区切り文字で分けて、指定した位置の断片を取り出す。範囲外は空文字。
SUBSTRING
文字列の一部を切り出す。開始位置は 1 から数える。
TRIM
文字列の前後の空白(や指定した文字)を取り除く。
UPPER / LOWER
英字を大文字・小文字にそろえる。比較で大文字小文字を無視したいときに使う。
数値関数
日付・時刻関数
条件・NULL の関数
型変換
行を作る関数
教材との違い
句・構文の使い方は教材で順を追って説明しています。ここは関数・演算子を引きに来た人のためのページで、呼び出しの形と落とし穴を先に置いています。 手を動かして覚えたいときは練習問題へどうぞ。