PostgreSQLの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を返す
以上、お疲れ様でした。
コメント