STTDEV・・・標準偏差を求める
VARIANCE・・・分散を求める
いづれも引数は数値型のみ。
STTDEV・・・標準偏差を求める
VARIANCE・・・分散を求める
いづれも引数は数値型のみ。
SUM(列か式)
nの合計値を戻す。引数は数値型のみ。
MAX(列名か式)
式の最大値を求める
引数に文字データを指定した場合、昇順の一番最後の行を返す。
MAX(SAL),MAX(JOB),MAX(HIREDATE)
→SALは数字の最大値、JOBは文字コードの大きい値、HIREDATEはもっとも新しい日付。
MIN(列名か式)
式の最小値を求める。MAXの逆。
いづれも引数はCHAR、VARCHAR2、DATE、NUMBER型を指定可能。
副問い合わせを使うときは、何らかの既存の表を利用して、新しいテーブルができることになる。その副問い合わせが数式の場合、SELECT文と違って列名がつかない。そのため列別名(新しいテーブルの列名になる)が必要。
COUNT(式)
COUNT(式)、COUNT(ALL)→式がNULLでない行数を求める。
COUNT(*)→アスタリスクで指定すると、重複値・NULL値を含めた全行数を返す。
COUNT(DISTINCT 式)→式がNULLでなく重複しない行数を求める。
COUNTは必ず結果を返す。COUNT(*)の時は、「レコードが戻されませんでした。」という結果ではなく、数値の0が戻される。
SELECT COUNT(*), COUNT(COMM) FROM EMP;
→EMP表の全行数(*)、COMM列を数える。ただしCOMM列にはNULLがあるので、NULLは数えられていない。
AVG(平均を出したい列)
特定の列の平均値を求める。引数は数値型のみ。
NULLは対象外。なので、列の値の合計をNULL値を持つ行を除いた行数で割る。
DISINCTをつけると重複行を除いた平均になるため。全ての行の平均と異なる場合がある。
SELECT AVG(SAL,COMM) FROM EMP;→2073.21429
SELECT AVG(SAL,COMM) FROM EMP;→エラー。引数は1個しか指定できない。
DECODE(式,値1,戻り値1,・・・値n,戻り値n,[戻り値z])
式の結果と値が一致する場合はその場所の戻り値を返す。どれも式と合わない場合は戻り値z(省略時はNULL)になる。CASE式でだいたい書き換えられる。
CASE 式 と DECODE 関数の違い
検索 CASE 式 のように評価する式が個々に設定できないため、範囲指定などの条件指定が基本的に行えない。
CASE 式は NULL との評価はすべて NULL になる。
一方 DECODE は NULL = NULL は True となる。
詳しくはSHIFT the Oracle
DECODE(JOB,'CLERK','CTU',
'SALESMAN','NSA',
'OTHERS')
JOBがCLERKならCTUを、SALESMANならNSAを、それ以外ならOTHERSを返す。
CASE 式 WHEN 条件1 THEN 値1
[WHEN 条件n THEN 値N
ELSE デフォルト値]
END
式の値が条件1と合えば、値1。一致しない場合は次の条件と比較する。ELSEが省略する場合はNULLを返す。
式・条件・値は同じデータ型である必要がある。
CASE JOB WHEN 'CLERK' THEN 'CTU'
WHEN 'SALESMAN'THEN 'NSA'
ELSE 'OTHERS'
END
JOBがCLERKだったらCTUに、SALESMANだったらNSAに、それ以外はOTHERSにする。
COALESCE(式1,式2、・・・式n)
式1から式nまでの式の中の最初のNULLでない式をもどす。どのデータ型でも使える。
COALESCE(COMM,MGR,SAL)
→コミッションがNULLでなければコミッションを、NULLの場合は上司を、上司もNULLの場合は給与をもどす。
coalesce [ko`uэle's] ・・・〔動植物{どうしょくぶつ}の組織{そしき}などが〕癒着{ゆちゃく}する。 〔複数{ふくすう}のものが〕合体{がったい}する、融合{ゆうごう}する
NULLIF(式1,式2)
式1と2を比較して、等しいときはNULL、等しくない場合は式1をもどす。
どのデータ型でも使える。
SELECT
ENAME,COMM,SAL,SAL+NVL(COMM,0),NULLIF(SAL,SAL+NVL(COMM,0)) SAL FROM EMP;
→給与と給与+コミッションが同じ場合はNULL、一致しない場合は給与をもどす