Chapter 13. 函式 (八):QUERY13.5 group by / pivot

13.5 group by / pivot


在 QUERY 中最重要的功能是使用公式來完成資料透視表,可以使用 group by、pivot 兩個語法來完成,如下:

語法

說明

group by

select 欄位, 匯總函式 group by 欄位 [, 欄位...]

例如 select A,sum(B) group by Aselect A,B,count(C),max(D) group by A,B,其注意事項如下:

  • group by 可根據某欄位相同的值匯總運算,若要根據多個欄位的值匯總可以使用逗點分格。
  • 假設欄位中有 M 個獨特的值、要輸出 N 個匯總函式,則最後的輸出會有 M 列 N 欄。
  • group by 輸出不會包含匯總的欄位名稱,因此在 select 的時候也要附上這些欄位

pivot

select 匯總函式 pivot 欄位 [, 欄位...]

例如 select sum(B),min(B),max(B) pivot A,注意事項如下:

  • 假設欄位中有 M 個獨特的值、要輸出 N 個匯總函式,則最後的輸出會有 2 列 (標題 & 值) M 欄。
  • pivot 輸出時會包含匯總的欄位名稱,因此在 select 的時候不用附上這些欄位。

換句話說,若要將 group by 和 pivot 分別對應到資料透視表的列和欄,而 select 和 where 則是值和篩選器。接下來使用一個範例介紹輸出的格式:


  1. 顯示各性別、家庭人口數的會員數量

    公式

    • =QUERY(會員資料,"select D,count(A) group by D pivot C")
    • =QUERY(會員資料,"select C,count(A) group by C pivot D")
    • =QUERY(會員資料,"select C,D,count(A) group by C,D")
    • =QUERY(會員資料,"select count(A) pivot C,D")

    解說

    四種方式的輸出格式不同,如下圖:

    • =QUERY(會員資料,"select D,count(A) group by D pivot C")
    • =QUERY(會員資料,"select C,count(A) group by C pivot D")
    • =QUERY(會員資料,"select C,D,count(A) group by C,D")
    • =QUERY(會員資料,"select count(A) pivot C,D")

有了 group by 及 pivot 兩個語法後,基本上可以完成各種資料透視表的功能,但是在輸出的格式還需要進行一些調整,而 QUERY 語法中也有相對應的功能,例如排序輸出、限制輸出列數、修改標題欄位名稱等,將在下一節有更深入的介紹!