Chapter 13. 函式 (八):QUERY13.1 QUERY 基本用法

13.1 QUERY 基本用法


本章示範檔案:Chapter 13. 函式 (八):QUERY
QUERY 是用 Google 視覺化 API 搜尋語言 完成的,可以輕鬆的針對結構化資料進行各種分析。本章將由淺入深的介紹 QUERY 的各項語法,並在最後一節的進階應用示範如何處理複雜的資料,讓大家之後使用 Google Sheets 進行資料分析,或是之後學習使用 SQL 處理更大量的資料時更得心應手!另外 QUERY 是 Google Sheets 獨有的函式,Excel 目前沒有此功能,將不特別使用 Appendix 說明之。

Google 視覺化 API 搜尋語言是一套由 Google 開發的語言,其語法和 SQL 非常類似,因此若之前有使用過 SQL 的話應該可以非常得心應手學習此章的內容,而實務上 QUERY 也相較於其他函式直覺不少,而且可以只使用一個函式就完成複雜的操作與計算。在了解 Google 視覺化 API 搜尋語言之前,先來看看 QUERY 的用法:

語法

QUERY (資料, 查詢, [標題])

輸入

  • 資料:資料庫的範圍,每一欄的資料型態要統一,若單欄包含多種資料型態,則會視該欄位大多數資料的類型決定,其他少數的資料會被視為空值。
  • 查詢:要執行的搜尋,以字串表示。
  • 標題資料 的前幾列是標題,預設為 -1,將視資料的內容自動判斷。

輸出

資料 依據 查詢 整理後的輸出,會占用多格儲存格 (所以是陣列公式)。

接下來各節將會介紹各項 查詢 的語法,會使用第 1 章的會員資料檔和交易記錄檔進行各項示範,兩檔案已分別被命名為會員資料 (A:I)、交易記錄 (A:J)。本節將先介紹 select、匯總函式及四則運算三種語法 ,使用方法如下:

語法

說明

select

select 欄位 [, 欄位...]

放在最開頭,後面接要選取的欄位,選取方式有以下兩種:

  • 選取所有欄位:使用 *,例如 select *
  • 使用欄位編號:例如 A、B、C 等,若要選擇多個欄位則使用半形逗號分隔,例如:select A,B,C
  • 使用 Coln:用於沒有欄位編號時,即 QUERY 的 資料 不是直接來自儲存格範圍,例如:select Col1,Col2

匯總函式

sum / avg / count / min / max (欄位)

可以在 select 選擇的欄位中使用上述的匯總函式,但因為匯總後會變成單一值,因此不能將特定欄位與匯總欄位同時選取,例如 sum(A)avg(C)

四則運算

執行跨欄位內容計算,僅適用於數值欄位,例如 select A+B

以下使用四個範例說明上述語法的使用方式:

  1. 選取所有會員資料

    公式

    =QUERY(會員資料,"select *")

    解說

    直接使用 "select *" 即可。

  2. 計算交易記錄 J 欄的總和

    公式

    =QUERY(交易記錄,"select sum(J)")

    解說

    輸出會出現 sum 售價,後續章節會說明如何更改或移除輸出的表頭名稱。

  3. 選取交易記錄的 H、I、J、I × J 四欄

    公式

    =QUERY(交易記錄,"select H,I,J,I*J")

    解說

    四則運算可以與一般的欄位一起輸出。

  4. 計算交易記錄的 I × J 欄的總和

    公式

    • 方法一:=SUM(QUERY(交易記錄,"select I*J"))
    • 方法二:=QUERY(QUERY(交易記錄, "select I*J"), "select sum(Col1)")

    解說

    因為匯總函式不能和四則運算一起使用,在此可用上述兩種方式解決:

    • 方法一:使用 QUERY 計算各列 I × J 欄的值,再使用 SUM 將 QUERY 輸出的陣列加總,會輸出 83,694。
    • 方法二:使用兩層 QUERY 完成,內層的 QUERY 先各列 I × J 欄的值,外層 QUERY 再將內層計算的結果加總,但因為內層輸出的結果並沒有欄位名稱,因此使用 Col1 代替,會輸出第一列表頭為 sum product(數量售價),第二列為 83,694。

    在這一節介紹了如何選取欄位,並對欄位進行簡單的計算後,下一節將介紹如何對資料進行篩選,再執行下一步的計算與欄位選取。