関数の最近のブログ記事

STTDEV、VARIANCE

STTDEV・・・標準偏差を求める
VARIANCE・・・分散を求める

いづれも引数は数値型のみ。

SUM

SUM(列か式)
nの合計値を戻す。引数は数値型のみ。

MAX, MIN

MAX(列名か式)
式の最大値を求める


引数に文字データを指定した場合、昇順の一番最後の行を返す。

MAX(SAL),MAX(JOB),MAX(HIREDATE)
→SALは数字の最大値、JOBは文字コードの大きい値、HIREDATEはもっとも新しい日付


MIN(列名か式)
式の最小値を求める。MAXの逆。


いづれも引数はCHAR、VARCHAR2、DATE、NUMBER型を指定可能。

CLEATE TABLE

副問い合わせを使うときは、何らかの既存の表を利用して、新しいテーブルができることになる。その副問い合わせが数式の場合、SELECT文と違って列名がつかない。そのため列別名(新しいテーブルの列名になる)が必要。

COUNT

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

AVG(平均を出したい列)
特定の列の平均値を求める。引数は数値型のみ。
NULLは対象外。なので、列の値の合計をNULL値を持つ行を除いた行数で割る。
DISINCTをつけると重複行を除いた平均になるため。全ての行の平均と異なる場合がある。


SELECT AVG(SAL,COMM) FROM EMP;→2073.21429
SELECT AVG(SAL,COMM) FROM EMP;→エラー。引数は1個しか指定できない。

DECODE

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式

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

COALESCE(式1,式2、・・・式n)
式1から式nまでの式の中の最初のNULLでない式をもどす。どのデータ型でも使える。

COALESCE(COMM,MGR,SAL)
→コミッションがNULLでなければコミッションを、NULLの場合は上司を、上司もNULLの場合は給与をもどす。


coalesce [ko`uэle's] ・・・〔動植物{どうしょくぶつ}の組織{そしき}などが〕癒着{ゆちゃく}する。 〔複数{ふくすう}のものが〕合体{がったい}する、融合{ゆうごう}する

NULLIF

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、一致しない場合は給与をもどす

アーカイブ

Powered by Movable Type 4.22-ja