方格精選

QUERY 函式大解析(一):基本原理與 SELECT

閱讀時間約 10 分鐘
隆重介紹:QUERY 函式!
QUERY 是一個可以對大量資料查詢特定資訊,依據特定篩選條件快速回傳儲存格、欄、範圍的函式。
真的很好用!
這個函式用的語言為所謂的 Google Visualization API Query Language(Google 視覺化 API 搜尋語言),是 Google 開發的一個類似 SQL 搜尋的語言。如果你不曾聽過 SQL 也沒關係,在 Google 試算表上的應用算比較直覺了,不需要很複雜的巢狀語法、也不需要新學很多很多語法。
如果你平常已經在用 SQL 來搜尋、整理資料的話,恭喜你,你的 QUERY 已經學了一大半了;如果你剛從 Excel 轉到 Google 試算表的話,我也非常推薦你從頭開始學這個強力的函式。
我在方格子上寫了一系列使用 QUERY 的教學文章,也歡迎你來看看:

優點

效率快

比起其他讀取資料的方法(如 IMPORTRANGE、直接用「=」參照等),QUERY 的執行時間大多可以在一眨眼間完成,就算有很大的資料,也可以輕易搜尋,效率很好。

維護容易

因為語法直覺,很快就能進行維護,如果需要更改語法也可以很直覺地編輯。

適合資料庫快速搜尋資訊、小型資料庫管理

在工作的時候 QUERY 可以幫助我快速統整資料!特別當資料會在試算表隨時變動的時候,QUERY 也會即時更新資訊,就像一個小型的資料庫一樣。如果只需要快速搜尋到一定的資訊、甚至掛上特定條件,也可以很快運算出來。

缺點

QUERY 輸出結果不能編輯

QUERY 和 FILTER、IMPORTRANGE 這類的函式一樣沒辦法直接對輸出結果編輯,而且如果結果覆蓋到輸出結果的話,會產生錯誤。
如果需要編輯的話,最理想還是可以透過原地貼上來解決、但如果資料筆數很大的話,可能就得再花其他手段來達成編輯的目標(例如下載成 .csv 後再匯入、輸出結果分段原地貼上、利用 QUERY 的 LIMIT 參數分段輸出後、再原地貼上等等)。

資料筆數(算)是有限制的

當搜尋的資料筆數太多,QUERY 就會稍稍變慢、效率就會和資料筆數成反比了,甚至連 Google 試算表本身也都會卡住。這時候可能還是用其他的資料庫軟體比較實在。

QUERY 輸出結果沒有格式

如果你在原本的資料範圍內有設定一些顏色、粗體、斜體、底線、字型等等的格式,QUERY 不會一起把這些設定輸出過來。格式這些東西如果真的有需要,可以用條件化格式稍稍美觀一下,或是等到資料都處理完畢後再來處理。

語法

非常地簡單:
=QUERY(資料, 查詢, [標題])
資料:查詢作業針對的儲存格範圍。
  • 這邊資料範圍有這三種資料格式:布林、數值(包含日期、時間)還有文字。
  • 如果資料範圍內的任一欄內有混合的資料格式,QUERY 會以主要的資料類型進行判斷,次要的資料類型會被視為空值。如果這樣的資料被視為空值的話,資料有可能會失準。
    在進行 QUERY 前最好確保每個欄位的資料格式都是一致、該有的樣子。例如說我有個欄位應該要存放「金額」,資料格式應該是要是數值才對,如果包含其他格式(如布林值、時間)的話就不會被正確讀取到。
查詢:想要查詢的 Google 視覺化 API 語法。
視覺…A…什麼?沒關係,我們會慢慢說明。這邊就是要告訴 QUERY 你要輸出什麼結果、有什麼限制條件等等的參數。這邊的語法是按照這個視覺化 API 語法的文件規範的,整面英文看起來是有點可怕,但今後會一個一個說明!
我們會打出這類的東西:
=QUERY(資料, "SELECT *")
=QUERY(資料, "SELECT * WHERE B = 'Mr. Sheet'")
=QUERY(資料, "SELECT * WHERE B > 10 AND C > 10")
=QUERY(資料, "SELECT A, B, C WHERE G = '台灣'")
這邊也要注意,我們的查詢語法必須要有前後兩個雙引號包好,不然會出錯。
[標題]:資料是否包含標題行。
這個是選填的參數,通常我們只會放 -1、0、1 這三種數字。說明如下:
  • 如果忽略這個引數或設成 -1,QUERY 會根據資料內容自己猜測資料是否包含標題行。
  • 如果是 0,那就是告訴 QUERY 這筆資料沒有標題行。
  • 如果是 1,那就是告訴 QUERY 這筆資料有 1 行標題。

SELECT

你或許有察覺到,在我們剛剛示範的語法內,反覆有「SELECT」這個字眼。這是代表「選取」的意思。SELECT 在 Google 試算表上的意義就是「選取想要的欄位」,告訴 QUERY 函式你想得到什麼結果。如果省略 SELECT 的話,就會回傳全部的欄位,但大多時候還是會很建議把 SELECT 寫上去。

SELECT *

選取全部欄位。

SELECT A

選取資料範圍的 A 欄。
你當然可以用別的字母代替,例如 SELECT A、SELECT B、SELECT C 等。在指定的時候確保你指定的欄位在前面定義的範圍裡。比如說,如果你想要選取 E 欄而打了 SELECT E,但你之前的範圍卻只定義到 D 欄,就會產生錯誤:
=QUERY(Sheet!A:D,"SELECT E") --> 產生錯誤!#ERROR

SELECT A, B, C …

你當然也可以選取兩個以上的欄,並且用逗號分隔。
像是 SELECT A, B, C,就會回傳 A 欄、B 欄、C 欄。要回傳多少欄位是沒有限制的,但也一樣要確保你的欄有在起初定義的範圍內。這邊的 A、B、C 也不一定得按照字母順序排列,你如果希望輸出結果是按 B、C、A 這個順序出現,那就寫 SELECT B, C, A。
SELECT 也可以和其他的彙總參數一起併用,得到範圍的平均、最大值、最小值、總和等等的數字,這個也會在之後另外講解。

練習

接下來,你可以試試看用這個試算表來練習 QUERY。
試著打開一個空白的工作表,做以下的 QUERY:
  1. 利用 SELECT 選取全部的欄位。
  2. 利用 SELECT 選取「學校名稱」。
  3. 利用 SELECT 選取「學校名稱」、「公/私立」、「電話」。
=QUERY('小學列表'!A:G, "SELECT *")
=QUERY('小學列表'!A:G, "SELECT B")
=QUERY('小學列表'!A:G, "SELECT B, C, F")
如何,還 OK 嗎?如果不確定怎麼做的話,也可以看看下面的教學喔!

利用 SELECT 選取全部的欄位

選一個你想要開始顯示結果的儲存格,輸入:
=QUERY(
像是這個樣子:
再來就是定義資料範圍了。在函式還在編輯的狀態下,你可以直接點下面的「小學列表」工作表,再用滑鼠把全部資料選起來。我是以欄為單位選的,所以出現 '小學列表'!A:G:
如果你直接按工作表左上角範圍選取,應該會出現 '小學列表'!1:2635。這也沒關係,QUERY 也讀得到你的資料。
但如果今後你的資料會往下生長(例如又多了新的小學的資料),我比較建議用「欄」的角度去選取,這樣不論資料怎麼更新、或是語法維護上都不必太操心。
如果你想要直接用打的來指定範圍,其實目前為止就是:
=QUERY('小學列表'!A:G
單引號表示工作表名稱,驚嘆號表示參照其他的工作表。
再來,我們就要來用 SELECT 來選取全部的欄位(SELECT 要大寫或是小寫都沒關係)。先打上一個逗點,之後用 SELECT * 來選取全部欄位。別忘了前後要加上雙引號,確定沒問題後就再加上右括號收尾:
=QUERY('小學列表'!A:G, "SELECT *")
痛快按下 Enter,就會看到你的 QUERY 成果:
這邊的 QUERY 結果都是未格式化的文字,儲存格的格式不會跟著過來這裡喔。

利用 SELECT 選取「學校名稱」

接下來,就和上面的方式一樣定義範圍,但要 SELECT 的欄位就不是全部(*)了,而是「小學列表」的 B 欄。語法就會是:
=QUERY('小學列表'!A:G, "SELECT B")
結果就會像這個樣子:

利用 SELECT 選取「學校名稱」、「公/私立」、「電話」

其實也就是同樣的道理了,我們要來取「小學列表」的 B、C、F 欄位。語法就是:
=QUERY('小學列表'!A:G, "SELECT B, C, F")
就會得到下列結果:

以上就是 QUERY 函式的第一部分,原理和 SELECT 的用法!
我們之後還會再推出幾篇,來詳細講解 QUERY 的應用方式。QUERY 真的是我工作的好夥伴,真心推薦大家。
如果你喜歡這次的文章,歡迎你透過這些方法支持我:
・按下愛心、按下儲存
・留言告訴我你的想法
・加入喜特先生的官方沙龍,即時看到我發布的教學
・付費訂閱喜特先生的官方沙龍,加入每月小額訂閱方案
・追蹤喜特先生的 Facebook
・按這邊小額贊助我的創作!
想要看更多文章,歡迎來到我的 Notion 頁面找找有沒有你需要的資源喔!
我是喜特先生,Mr. Sheet,我們下個教學見!
11.7K會員
147內容數
簡潔,快速,有效, 讓你的日常生活、工作生產力大提升! ___ 快按「加入」,馬上追蹤所有喜特先生的更新,有 Google 試算表教學、Google Apps Script 的研究、數據分析課程的開箱,還有 Google 試算表疑難雜症的解題分享唷!💪
留言0
查看全部
發表第一個留言支持創作者!
你可能也想看
Google News 追蹤
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
美國總統大選只剩下三天, 我們觀察一整週民調與金融市場的變化(包含賭局), 到本週五下午3:00前為止, 誰是美國總統幾乎大概可以猜到60-70%的機率, 本篇文章就是以大選結局為主軸來討論近期甚至到未來四年美股可能的改變
Thumbnail
Faker昨天真的太扯了,中國主播王多多點評的話更是精妙,分享給各位 王多多的點評 「Faker是我們的處境,他是LPL永遠繞不開的一個人和話題,所以我們特別渴望在決賽跟他相遇,去直面我們的處境。 我們曾經稱他為最高的山,最長的河,以為山海就是盡頭,可是Faker用他28歲的年齡...
Thumbnail
條件資料行是POWER QUERY裡面一個可以設定指定條件,進而判斷符合條件的資料產生指定的內容,就跟EXCEL中的IF函數很像。 但是POWER QUERY的條件資料行,他是利用對話式的視窗,所以不需要自己動手寫函數,就可以順利達到相同的功能。 今天就用1個資料3個題目來學習這個功能
Thumbnail
日前在LINE社群,有網友提出一個問題,要把資料進行分析,用日期來計算出將對應的資料。 原始資料,密密麻麻的數據,都看不清楚了 放大一點點 要把這些資料不同『料號』的各種『狀態』依據『日期』進行分析。 有興趣可以下載試著挑戰看看:檔案下載 作法有很多種,當然也可以用函數處
Thumbnail
網友提問的一個問題,這個問題其實也蠻常見,資料中相同日期的項目全部合併到同一個儲存格中,來簡化資料的顯示。 這邊分享三種作法,通用的函數法、365函數法、POWER QUERY法 💡通用函數法 通用版本的函數需要輔助欄才可以達成這個需求 輔助欄C2=VLOOKUP(A2,A2:B10,
Media query可以很複雜,但是這裡KP只談最簡單、最實用的基礎。
Thumbnail
粉絲提問需求 儲存格中這一段字串:baseccy=usd,baseccyamoun=1300,type=short} 要如何把字串中1300的數字給抓出來,其實方式蠻多的,今天來介紹3種方式 第一種剖析法: 先將資料選取出來之後利用資料剖析,因為資料的規則數字是在=之後與逗號之前,所以可以先將逗號剖
Thumbnail
不得不說仁川機場的機場本體建築設計很有設計感,大韓航空跟韓亞航的主場都在仁川機場,尤其是大韓航空KOREAN AIR,在其官網上寫著韓國第一的航空公司,多麼自信的口號,讓人想像著充滿設計感的韓國第一的航空公司貴賓室應該有一些驚艷旅客的設計吧。實際上,到了貴賓室的感覺是驚嚇,因為好像來到東南亞的某個不
Thumbnail
如果你正在學習SQL,這邊介紹一個方便簡易的方式,不須透過安裝傳統的MySQL,只要利用Google提供的BigQuery開源示範dataset就可以實作練習,另一方面,如果你想應用自己手邊上的資料,也能簡單的使用匯入功能(如何匯入看這邊)。 輸入名稱「data-to-insights」。
Thumbnail
在【刁民國】一定要買房,不然就會變成「社會邊緣倫」,與財富重分配絕緣,而且你一定要買「會賺錢」的房子,那種拿來【遮風避雨】的房子,求求你千萬不要買,不如租房子,剩下錢出國旅遊,充實自己總比住在【財務地獄】好。 在這個【刁民寶島】,拿房地產來抵抗通貨膨脹?~就你腦袋進水信這套~有錢人當然為了賺大錢。
Thumbnail
又到了愉悅的蕾蕾週五影院 而且是連續假期的週五,真是太令人開心了👏🎉 週五電影-旅遊篇暫時告一段落 上週看完金鐘獎,決定要來開啟台灣篇 好好的介紹一下台灣優秀的影劇們 (Netflix前三都是韓片有點Sad🥲)   第一部就獻給本次得獎的大債時代。 Netflix 上面有哦  
Thumbnail
※劇透 這篇文章盡可能解析女主角昭容王妃、男主角哲宗皇帝以及男神張奉煥三人的角色關係與變化,內容較多還請大家耐心看完。情感的導師、扶持的戰友、陪伴的摯友、曖昧的情人、牽掛的靈魂,這些身分都是在《哲仁王后》中一位身兼多職的角色,沒錯,就是....
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
美國總統大選只剩下三天, 我們觀察一整週民調與金融市場的變化(包含賭局), 到本週五下午3:00前為止, 誰是美國總統幾乎大概可以猜到60-70%的機率, 本篇文章就是以大選結局為主軸來討論近期甚至到未來四年美股可能的改變
Thumbnail
Faker昨天真的太扯了,中國主播王多多點評的話更是精妙,分享給各位 王多多的點評 「Faker是我們的處境,他是LPL永遠繞不開的一個人和話題,所以我們特別渴望在決賽跟他相遇,去直面我們的處境。 我們曾經稱他為最高的山,最長的河,以為山海就是盡頭,可是Faker用他28歲的年齡...
Thumbnail
條件資料行是POWER QUERY裡面一個可以設定指定條件,進而判斷符合條件的資料產生指定的內容,就跟EXCEL中的IF函數很像。 但是POWER QUERY的條件資料行,他是利用對話式的視窗,所以不需要自己動手寫函數,就可以順利達到相同的功能。 今天就用1個資料3個題目來學習這個功能
Thumbnail
日前在LINE社群,有網友提出一個問題,要把資料進行分析,用日期來計算出將對應的資料。 原始資料,密密麻麻的數據,都看不清楚了 放大一點點 要把這些資料不同『料號』的各種『狀態』依據『日期』進行分析。 有興趣可以下載試著挑戰看看:檔案下載 作法有很多種,當然也可以用函數處
Thumbnail
網友提問的一個問題,這個問題其實也蠻常見,資料中相同日期的項目全部合併到同一個儲存格中,來簡化資料的顯示。 這邊分享三種作法,通用的函數法、365函數法、POWER QUERY法 💡通用函數法 通用版本的函數需要輔助欄才可以達成這個需求 輔助欄C2=VLOOKUP(A2,A2:B10,
Media query可以很複雜,但是這裡KP只談最簡單、最實用的基礎。
Thumbnail
粉絲提問需求 儲存格中這一段字串:baseccy=usd,baseccyamoun=1300,type=short} 要如何把字串中1300的數字給抓出來,其實方式蠻多的,今天來介紹3種方式 第一種剖析法: 先將資料選取出來之後利用資料剖析,因為資料的規則數字是在=之後與逗號之前,所以可以先將逗號剖
Thumbnail
不得不說仁川機場的機場本體建築設計很有設計感,大韓航空跟韓亞航的主場都在仁川機場,尤其是大韓航空KOREAN AIR,在其官網上寫著韓國第一的航空公司,多麼自信的口號,讓人想像著充滿設計感的韓國第一的航空公司貴賓室應該有一些驚艷旅客的設計吧。實際上,到了貴賓室的感覺是驚嚇,因為好像來到東南亞的某個不
Thumbnail
如果你正在學習SQL,這邊介紹一個方便簡易的方式,不須透過安裝傳統的MySQL,只要利用Google提供的BigQuery開源示範dataset就可以實作練習,另一方面,如果你想應用自己手邊上的資料,也能簡單的使用匯入功能(如何匯入看這邊)。 輸入名稱「data-to-insights」。
Thumbnail
在【刁民國】一定要買房,不然就會變成「社會邊緣倫」,與財富重分配絕緣,而且你一定要買「會賺錢」的房子,那種拿來【遮風避雨】的房子,求求你千萬不要買,不如租房子,剩下錢出國旅遊,充實自己總比住在【財務地獄】好。 在這個【刁民寶島】,拿房地產來抵抗通貨膨脹?~就你腦袋進水信這套~有錢人當然為了賺大錢。
Thumbnail
又到了愉悅的蕾蕾週五影院 而且是連續假期的週五,真是太令人開心了👏🎉 週五電影-旅遊篇暫時告一段落 上週看完金鐘獎,決定要來開啟台灣篇 好好的介紹一下台灣優秀的影劇們 (Netflix前三都是韓片有點Sad🥲)   第一部就獻給本次得獎的大債時代。 Netflix 上面有哦  
Thumbnail
※劇透 這篇文章盡可能解析女主角昭容王妃、男主角哲宗皇帝以及男神張奉煥三人的角色關係與變化,內容較多還請大家耐心看完。情感的導師、扶持的戰友、陪伴的摯友、曖昧的情人、牽掛的靈魂,這些身分都是在《哲仁王后》中一位身兼多職的角色,沒錯,就是....