除了前幾天介紹幾個比較基本的CRUD功能,PostgreSQL也有提供Aggregate Function,讓使用者可以對資料做一些運算,結合分群的功能,也能夠統計一些數據。舉例來說,如果我們想要知道 address
這張table有多少筆資料,可以用 count()
加總。
SELECT count(*) FROM address
如果想要統計有多少筆地址分布在各個城市,可以用 GROUP BY
並搭配 count()
做加總,還可以使用 max()
找出地址的最後更新時間。
SELECT address.city_id, count(*), max(address.last_update) FROM address
GROUP BY address.city_id
此外,還可以用 FILTER
下條件,過濾不要統計哪些資料,舉例來說,我們想要排除沒有電話號碼的地址,可以在 count(*)
後面加上 FILTER(WHERE phone != '')
。
SELECT address.city_id, count(*) FILTER(WHERE phone != ''), max(address.last_update) FROM address
GROUP BY address.city_id
用 city_id = 576
做驗證,有加上 FILTER(WHERE phone != '')
, count(*)
統計出來只有一筆資料。
沒有加上條件,會有兩筆資料。