iT邦幫忙

第 11 屆 iT 邦幫忙鐵人賽

DAY 25
1
AI & Data

後端前進PostgreSQL系列 第 25

PostgreSQL 內建/自訂 Function

內建處理數字的 Function

PostgreSQL 有一些內建的方法,以下列出幾個很常見的!

  • sum() 加總
  • avg() 平均值
  • count() 總計筆數

還有很多很多,請參考這裡:

https://www.postgresql.org/docs/current/functions-aggregate.html

可以搭配 GROUP BY 計算查詢資料的總和、平均值或筆數!

建立自己的 Function

現在寫程式,提倡物件導向,把它寫成一個Class 或是方法,反正只需要告訴我需要的值,我給你計算後的結果,過程你不需要知道。

例如:AWS 有API 可以把照片傳給它,幫你判斷照片中的所有事物,程式邏輯裡面,牽扯到相當多的分析運算,包含機器學習(讓判斷更準確),或是臉部辨識的圖片分析程式,不過你只需要給它一張照片,它就會回傳相關的關鍵字,有人物在照片中的話,就會告訴你性別、大約年紀...或者照片中其他的內容,照片有 背包、椅子、iPhone ...

這樣的過程減少了很多的麻煩,如果你常常使用這些方法的話。

現在就來打造第一個 資料庫的 Function ,其他資料庫也有類似的功能喔!

先來打造一個簡單的Function吧!動物年紀轉換功能,命名為 animal_age_change() 好了!邏輯的部分我們定義,年紀大於一年 成犬、成貓...(ADULT)小於一年 幼犬、幼貓...(CHILD)

CREATE OR REPLACE FUNCTION
animal_age_change(birthday timestamp)
RETURNS text AS $$
BEGIN
  IF now() - birthday >= '1 years'::interval THEN RETURN 'ADULT';
  ELSE RETURN 'CHILD';
  END IF;
END;
$$ LANGUAGE plpgsql;

只要給動物生日的日期,並且搭配方法 例如:animal_age_change('2019-10-10') 就可以判斷並回傳成犬還是幼犬

SELECT animal_age_change('2019-10-01');
--結果'CHILD' 執行日期 2019-10-10

上一篇
PostgreSQL View
下一篇
PostgreSQL Trigger
系列文
後端前進PostgreSQL30

尚未有邦友留言

立即登入留言