
PostgreSQLのSIGNの使い方は?
SIGN関数ってどんなときに使うの?
わかりやすく教えてほしい!
こういった疑問にこたえます。
この記事を読めば
- SIGN関数を使って引数の正負判定が行えるようになる
- SIGN関数の使い道がわかる
エンジニアの僕がわかりやすく解説します。
SIGN関数の使い方
SIGN関数は引数の正負を判定する関数です。
引数が正なら1、引数が0なら0、引数が負なら-1を返します。
構文はこんなかんじ。
SIGN(引数)例えば、次のようなsalesテーブルがあったとします。
| year | q1 | q2 | q3 | q4 | 
| 2018 | 8200 | 8300 | 7800 | 8300 | 
| 2019 | 8500 | 8500 | 8000 | 8100 | 
| 2020 | 9200 | 8100 | 
ここで平均売り上げを計算したいとします。2020年だけデータが二つなので2で割る必要があります。
こういった場合にSIGN関数を使えると便利です。
SELECT
  year
  ,(COALESCE(q1,0) + COALESCE(q2,0) + COALESCE(q3) + COALESCE(q4,0))
  / (SIGN(COALESCE(q1,0)) + SIGN(COALESCE(q2,0))
    + SIGN(COALESCE(q3,0)) + SIGN(COALESCE(q4,0)))
    AS average
  FROM sales
ORDER BY year;実行結果
| year | average | 
|---|---|
| 2018 | 8150 | 
| 2019 | 8275 | 
| 2020 | 8650 | 
COALESCE関数でNULLを0に置き換え、SIGN関数で正負判定し、正の場合だけ+1するように記述します。
知っておくとデータ分析に役立つのでぜひ覚えておきましょう!
SIGN関数の使い方まとめ
解説の内容をまとめます。
- SIGN関数は正負の判定を行う関数
- 引数が正の場合1、0の場合は0、負の場合は-1を返す
以上、お疲れ様でした。
 
  
  
  
  

コメント