QUERY 函式大解析(十四):子查詢①篩選聚集結果

更新於 發佈於 閱讀時間約 6 分鐘

這邊有一張表格,有員工的姓名、部門、年齡、薪水、公司的資料:

raw-image

在這個表格裡,我想找「薪水在高於平均值的員工」有哪些,可以怎麼找呢?或許你有閃過這樣的寫法:

=QUERY(A:E, "SELECT * WHERE D > AVG(D)")

但是這樣會回傳錯誤,因為 AVG(D) 這樣的聚集函數沒辦法出現在 WHERE 語句裡面。

那還可以怎麼寫呢?如果是在 SQL 上,你可以用 HAVING 來完成,用它對聚集函數的結果進行篩選。可惜 QUERY 沒有 HAVING 這個方法,那還可以怎麼解決呢?

我想要介紹一個新東西,叫做子查詢(Subquery)




子查詢(Subquery)

以 Google 試算表的 QUERY 角度來看,子查詢就是 QUERY 裡面再包著一個或多個 QUERY我們通常會把開頭的等號(=)後的 QUERY 叫做主查詢,在 QUERY 裡面存在的 QUERY 叫做子查詢。

我們可以用子查詢來篩選、計算聚集(加總、平均、數量等)、從其他表格查詢資料來幫助現在的 QUERY,解鎖更多查詢的可能性!

QUERY,我們通常會把子查詢放在兩個地方。

  • WHERE 中使用(第四行~第五行):
=QUERY(資料,
"SELECT ...
WHERE A > "
& QUERY(資料,
"QUERY 語句​") &
"")

當你想要以子查詢的結果作為 WHERE 的條件,就用這個!

要注意這種子查詢會用到 & 來連結,讓 WHERE 跟第二個 QUERY 的結果接在一起。你可以回到這邊複習一下 & 的用法:QUERY 函式大解析(九):與儲存格連動


  • 當作主查詢的表格使用(第二行~第五行):
=QUERY(
QUERY(A:D,
"SELECT ...
WHERE ...
..."),
"SELECT Col1, Col2, Col3 ...
WHERE ...
...")

當你想要先用子查詢做一個表格給主查詢用,就用這個!

這種子查詢則是不需要用 &,但是主查詢的時候要用 Col# 取代欄位字母,像是第一欄就是 Col1、第二欄就是 Col2、第三欄就是 Col3,以此類推。

不過這邊提到的使用時機只是一個參考,你可以看看自己的需求,再衡量要用哪一個方法來做子查詢。卡住的話也歡迎問喜特先生喔✨




對聚集結果篩選

好,回到一開始提到的題目。歡迎來這邊複製一份試算表,一起來練習!

在這個表格裡,我想找「薪水在高於平均值的員工」有哪些:

raw-image

這邊我想用第一個方法(把子查詢放在 WHERE 後面)比較符合我的需求。我目前想到的是:

=QUERY('員工資料'!A:E,
"SELECT *
WHERE D >= 平均值")

(寫 QUERY 的時候,可以善用 Ctrl/Cmd + Enter 來換行喔)

這樣應該就可以得到答案了。不過這邊的「平均值」要怎麼求?我們可以先在「子查詢」的工作表,用 QUERY 求平均值,也就是:

=QUERY('員工資料'!A:E,
"SELECT AVG(D)")

來看看結果:

raw-image

對,雖然得到數字了,不過第一列有個標題列,如果直接拿這個結果去跟主查詢接在一起的話,會產生錯誤,因為主查詢的 QUERY 會變成這樣:

=QUERY('員工資料'!A:E,
"SELECT *
WHERE D >= avg 薪水 65918.36735")

avg 薪水 65918.36735」,文字跟數字混在一起了。


那怎麼把標題列拿掉?很簡單,我們可以再用 LABEL 語句,強制把「avg 薪水」變成空白。回到我們在工作表上寫的子查詢 QUERY,稍稍更改一下:

=QUERY('員工資料'!A:E,
"SELECT AVG(D)
LABEL AVG(D) ''"

讚,標題列不見啦!

raw-image


再來把它跟主查詢用 & 接起來就可以了。

=QUERY('員工資料'!A:E,
"SELECT *
WHERE D >= "
& QUERY('員工資料'!A:E,
"SELECT AVG(D)
LABEL AVG(D) ''")
& "")
raw-image


當然,你也可以繼續編輯主查詢。

比如說,我做了一個簡易的資料透視表,找到各個公司裡,各個部門超過平均值薪水的員工個數:

=QUERY('員工資料'!A:E,
"SELECT B, COUNT(A)
WHERE D >= "
& QUERY('員工資料'!A:E,
"SELECT AVG(D)
LABEL AVG(D) ''")
& "GROUP BY B
PIVOT E")
raw-image




替代方案

如果你覺得子查詢有點複雜不好用,你也可以先在別的儲存格,先用 AVERAGE 函式算 D 欄的平均值是多少,然後再用 & 連接起來也是一招。我在「替代方案」工作表也做了一個範例,供你參考:

raw-image




如果你喜歡這次的文章,歡迎你透過這些方法支持我:

  • 按下愛心、按下儲存
  • 留言告訴我你的想法
  • 加入喜特先生的官方沙龍,即時看到我發布的教學
  • 付費訂閱喜特先生的官方沙龍,加入每月小額訂閱方案
  • 追蹤喜特先生的 Facebook
  • 這邊小額贊助我的創作!

想要看更多文章的話,歡迎來到我的 Notion 頁面找找有沒有你需要的資源喔!

我是喜特先生,Mr. Sheet,我們下個教學見!



留言
avatar-img
留言分享你的想法!
avatar-img
喜特先生官方沙龍
17.8K會員
152內容數
簡潔,快速,有效, 讓你的日常生活、工作生產力大提升! ___ 快按「加入」,馬上追蹤所有喜特先生的更新,有 Google 試算表教學、Google Apps Script 的研究、數據分析課程的開箱,還有 Google 試算表疑難雜症的解題分享唷!💪
2025/04/20
請你試著在 Google 試算表的儲存格上打這個,按下 Enter: =WHATTHEFOXSAY() 會有神奇的事情發生喔 ✨
Thumbnail
2025/04/20
請你試著在 Google 試算表的儲存格上打這個,按下 Enter: =WHATTHEFOXSAY() 會有神奇的事情發生喔 ✨
Thumbnail
2024/06/02
上次介紹了 REPLACE 函式,可以用來取代儲存格內的特定文字。其實我們還有一個相似的函式叫 SUBSTITUTE,也有取代的功能,不過當然有一點不一樣的地方!今天會分享語法的範例,還有跟 REPLACE 的差異在哪。一起來看看!
Thumbnail
2024/06/02
上次介紹了 REPLACE 函式,可以用來取代儲存格內的特定文字。其實我們還有一個相似的函式叫 SUBSTITUTE,也有取代的功能,不過當然有一點不一樣的地方!今天會分享語法的範例,還有跟 REPLACE 的差異在哪。一起來看看!
Thumbnail
2024/05/25
這是文字處理基礎函式的第四篇文章,今天要來介紹 REPLACE 函式! REPLACE 可以取代掉儲存格內的文字,今天會分享一下它語法怎麼寫、也有兩個實際應用的案例。一起來看看! REPLACE 語法 REPLACE 的語法長了一點點,有四個參數要設定: =REPLACE(要取代
Thumbnail
2024/05/25
這是文字處理基礎函式的第四篇文章,今天要來介紹 REPLACE 函式! REPLACE 可以取代掉儲存格內的文字,今天會分享一下它語法怎麼寫、也有兩個實際應用的案例。一起來看看! REPLACE 語法 REPLACE 的語法長了一點點,有四個參數要設定: =REPLACE(要取代
Thumbnail
看更多
你可能也想看
Thumbnail
大家好,我是一名眼科醫師,也是一位孩子的媽 身為眼科醫師的我,我知道視力發展對孩子來說有多關鍵。 每到開學季時,診間便充斥著許多憂心忡忡的家屬。近年來看診中,兒童提早近視、眼睛疲勞的案例明顯增加,除了3C使用過度,最常被忽略的,就是照明品質。 然而作為一位媽媽,孩子能在安全、舒適的環境
Thumbnail
大家好,我是一名眼科醫師,也是一位孩子的媽 身為眼科醫師的我,我知道視力發展對孩子來說有多關鍵。 每到開學季時,診間便充斥著許多憂心忡忡的家屬。近年來看診中,兒童提早近視、眼睛疲勞的案例明顯增加,除了3C使用過度,最常被忽略的,就是照明品質。 然而作為一位媽媽,孩子能在安全、舒適的環境
Thumbnail
我的「媽」呀! 母親節即將到來,vocus 邀請你寫下屬於你的「媽」故事——不管是紀錄爆笑的日常,或是一直想對她表達的感謝,又或者,是你這輩子最想聽她說出的一句話。 也歡迎你曬出合照,分享照片背後的點點滴滴 ♥️ 透過創作,將這份情感表達出來吧!🥹
Thumbnail
我的「媽」呀! 母親節即將到來,vocus 邀請你寫下屬於你的「媽」故事——不管是紀錄爆笑的日常,或是一直想對她表達的感謝,又或者,是你這輩子最想聽她說出的一句話。 也歡迎你曬出合照,分享照片背後的點點滴滴 ♥️ 透過創作,將這份情感表達出來吧!🥹
Thumbnail
※ 語法 SELECT select_list FROM table_name​ ※ 解析順序 From:從哪裡拿? SELECT:要 "拿什麼" 資料? ※ 使用場景: Single column(單一欄位): Multiple column(多個欄位): All colu
Thumbnail
※ 語法 SELECT select_list FROM table_name​ ※ 解析順序 From:從哪裡拿? SELECT:要 "拿什麼" 資料? ※ 使用場景: Single column(單一欄位): Multiple column(多個欄位): All colu
Thumbnail
在進行SQL查詢邏輯更改時,需要適當地使用SubQuery和join來達到新的排序需求。本文將介紹原本的撈取邏輯、需求以及如何使用SubQuery來解決新的排序需求。
Thumbnail
在進行SQL查詢邏輯更改時,需要適當地使用SubQuery和join來達到新的排序需求。本文將介紹原本的撈取邏輯、需求以及如何使用SubQuery來解決新的排序需求。
Thumbnail
條件資料行是POWER QUERY裡面一個可以設定指定條件,進而判斷符合條件的資料產生指定的內容,就跟EXCEL中的IF函數很像。 但是POWER QUERY的條件資料行,他是利用對話式的視窗,所以不需要自己動手寫函數,就可以順利達到相同的功能。 今天就用1個資料3個題目來學習這個功能
Thumbnail
條件資料行是POWER QUERY裡面一個可以設定指定條件,進而判斷符合條件的資料產生指定的內容,就跟EXCEL中的IF函數很像。 但是POWER QUERY的條件資料行,他是利用對話式的視窗,所以不需要自己動手寫函數,就可以順利達到相同的功能。 今天就用1個資料3個題目來學習這個功能
Thumbnail
網友提出的一個問題,如影片。 當輸入關鍵字+數量,例:起司+10 下拉式選單自動產生有關起司的產品的清單供選擇並且帶出規格、數量、金額與小計 《為什麼要做這個功能呢?》 當資料很多的時候,如果每筆資料都是用篩選的方式來找出想要的產品,可能會耗掉非常多的時間。 所以如果可以藉由關鍵字,
Thumbnail
網友提出的一個問題,如影片。 當輸入關鍵字+數量,例:起司+10 下拉式選單自動產生有關起司的產品的清單供選擇並且帶出規格、數量、金額與小計 《為什麼要做這個功能呢?》 當資料很多的時候,如果每筆資料都是用篩選的方式來找出想要的產品,可能會耗掉非常多的時間。 所以如果可以藉由關鍵字,
Thumbnail
日前在LINE社群,有網友提出一個問題,要把資料進行分析,用日期來計算出將對應的資料。 原始資料,密密麻麻的數據,都看不清楚了 放大一點點 要把這些資料不同『料號』的各種『狀態』依據『日期』進行分析。 有興趣可以下載試著挑戰看看:檔案下載 作法有很多種,當然也可以用函數處
Thumbnail
日前在LINE社群,有網友提出一個問題,要把資料進行分析,用日期來計算出將對應的資料。 原始資料,密密麻麻的數據,都看不清楚了 放大一點點 要把這些資料不同『料號』的各種『狀態』依據『日期』進行分析。 有興趣可以下載試著挑戰看看:檔案下載 作法有很多種,當然也可以用函數處
Thumbnail
延伸 MATCHES「|」的 OR 字元應用,我們還可以讓它跟工作表內的範圍做連動,做出更彈性的 QUERY。一起來看看怎麼做吧!
Thumbnail
延伸 MATCHES「|」的 OR 字元應用,我們還可以讓它跟工作表內的範圍做連動,做出更彈性的 QUERY。一起來看看怎麼做吧!
Thumbnail
在用 QUERY 查詢資料時,你曾遇過在 WHERE 寫很多個 OR 的狀況嗎?有個更簡單好用的寫法推薦給你,來瞧瞧!
Thumbnail
在用 QUERY 查詢資料時,你曾遇過在 WHERE 寫很多個 OR 的狀況嗎?有個更簡單好用的寫法推薦給你,來瞧瞧!
Thumbnail
這邊統整了所有過去發表過關於 QUERY 函式的教學分享,希望可以方便你按照順序閱讀和練習。 QUERY 可以用來查詢、篩選、聚集、排序資料,還可以做張簡易的資料透視表,是我在 Google 試算表上做數據分析、製作報告、製作儀表板時最常用的函式之一,既方便又好用,誠心推薦!
Thumbnail
這邊統整了所有過去發表過關於 QUERY 函式的教學分享,希望可以方便你按照順序閱讀和練習。 QUERY 可以用來查詢、篩選、聚集、排序資料,還可以做張簡易的資料透視表,是我在 Google 試算表上做數據分析、製作報告、製作儀表板時最常用的函式之一,既方便又好用,誠心推薦!
Thumbnail
在Dcard有人求救一個問題:想要將layer與panel的資料提出出來,如下圖。 這個題目是很經典的需求,就是多條件查找,多條件查找有蠻多種不同的解決方法,甚至版本不同解法也是天壤之別哦。 準備動作 在寫函數之前,記得要先觀察一下我們想要提取的資料有什麼樣的規則,可以發現A欄中只
Thumbnail
在Dcard有人求救一個問題:想要將layer與panel的資料提出出來,如下圖。 這個題目是很經典的需求,就是多條件查找,多條件查找有蠻多種不同的解決方法,甚至版本不同解法也是天壤之別哦。 準備動作 在寫函數之前,記得要先觀察一下我們想要提取的資料有什麼樣的規則,可以發現A欄中只
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News