語法:
SELECT ${columns} COUNT(*) FROM table GROUP BY ${column};
來查詢table中以特定欄位分組,各種欄位內容的計數。
(原始table, facility/booking)
(查詢結果,以facility name將booking分組,並統計每個facility的預訂數量)
針對COUNT的聚合結果如果要進行過濾,則在query後面加入HAVING clause,如下面加入having count(*) > 300來過濾掉預訂數不到三百的設施。
(COUNT(*)會回傳欄位的數目,而COUNT(column)只會計算該欄位非空的值)
(COUNT DISTINCT回傳的是該欄位出現過幾種不同的數值)
語法:
SELECT ${columns} SUM(${column}) FROM table GROUP BY ${column};
以下query透過SUM() aggregate function將每位使用者預定設施的總時數group by之後加總,最後依照每位使用者總時數來由大到小排序
以下query透過AVG()來得出每項設施的單次平均借用時間
select cd.facilities.name, avg(cd.bookings.slots) * 30 AS "average book time(minutes)"
from cd.bookings join cd.facilities on cd.bookings.facid = cd.facilities.facid
group by cd.facilities.name;
以下query將member以id做group by,來從預訂紀錄中找到他們最早一筆(最小值)的預定紀錄
取得每項設施最近被預約的時間,query如下: