Image Description
Soranat Chamkring
  • 7 March 2024
  • 15 mins read

วิธีเขียน Query บน Google Sheet

Toy

7 March 2024

เราเขียน SQL บน Google Sheet ได้ป่าวพี่ทอย ?

เดี๋ยวพี่จะเล่าให้ฟังๆ

    Google Sheet เป็น Tools ที่หลาย ๆ คนน่าจะเคยใช้กันมาบ้างแล้ว ด้วยความสะดวกสบายของ Google Sheet ทำให้เราสามารถแก้ไข ข้อมูลแบบ Speardsheet ได้อย่างรวดเร็ว ทำงานพร้อมกันกับเพื่อนร่วมงาน และสามารถย้อนเวอร์ชั่นของงานได้ รวมถึงสามารถจัดการข้อมูลขนาดเล็ก - กลางได้สบาย ถึง 10,000,000 cells

    วันนี้ผมจะมาแนะนำวิธีการทำงานบน Google Sheet อีกหนึ่งวิธีที่มีการใช้งานกันภายในทีมบ่อย และมีประสิทธิภาพค่อนข้างสูง สำหรับงานที่ต้องการเห็นข้อมูลอัพเดททุกวัน และงานที่ต้องจัดการกับ Data ด้วยภาษา SQL ขั้นพื้นฐาน ใครมีพื้นฐานเรื่องการ Query มาก่อนฟังแล้วเก็ทแน่นอน แต่ถ้าไม่เคยเรียน แน่นอนว่าคุณจะได้เรียนมันวันนี้ครับ

หากต้องการรู้เกี่ยวกับ SQL คุณสามารถกดอ่านได้เลย คลิกที่นี่

1.การเริ่มต้นใช้งาน Google Sheet

sheet.new
ภาพตัวอย่าง
การเริ่มต้นใช้งาน ด้วยคำสั่ง sheet.new

    การเริ่มต้นใช้งาน Google Sheet สามารถทำได้ 2 วิธีหลัก โดยวิธีแรกจะใช้การเปิดผ่านหน้า UI ของ Google Sheet แล้วกดสร้างชีทใหม่ได้เลย ส่วนอีกวิธีที่จะแนะนำนั้นง่ายกว่ามากๆ คือการพิมพ์คำสั่ง Sheet.new ลงในช่อง URL แล้วกด Enter ในกรณีที่มี Account ของ Google อยู่แล้วข้อมูลชีทใหม่หากมีการแก้ไข จะถูกบันทึกลงในไดรฟ์ของเราอัตโนมัติ

2.คำสั่ง Query พื้นฐาน

    คำสั่งพื้นฐานที่เราสามารถใช้ได้บน Google Sheet ในการเขียน Query ข้อมูล จะไม่ได้สามารถใช้ window function ตัวอื่น ๆ นอกเหนือจากการทำ Aggregate data เช่น COUNT(), SUM() , MAX() , MIN() และ AVG() เป็นต้น ไม่สามารถใช้ DISTINCT , IN , BETWEEN , WITH รวมถึงยังไม่สามารถใช้การ Join ทุกรูปแบบได้ (การเชื่อมข้อมูลใน Google Sheet มีหลายทางเลือกเลย Index match, Xloopup , Vlookup ให้เลือกใช้ ไปใช้ตรงนู้น )

    * สำหรับข้อมูลที่เขียน Query ยังสามารถใช้การเชื่อม Text เพื่อทำเป็น Dynamic Query ได้เช่นกัน

หลักการ Query บน Google Sheet

ตัวอย่างคำสั่ง Query
Caption : ตัวอย่างคำสั่ง Query

    คำสั่งพื้นฐานของการ Query จะมีความแตกต่างการภาษา SQL ทั่วไปเล็กน้อย โดยจะใช้ function Query() ในการเลือกช่วงของข้อมูลมาก่อน แล้วหลังจากนั้นเราจะเขียน SELECT Statement ปกติ โดยละเว้นการใช้ FROM .. เนื่องจากเรากำหนด Range ไว้แล้วใน data ตามที่แสดงผลใน syntax ตามภาพด้านบน

วิธีการเขียน Query เบื้องต้น

    โครงสร้างของคำสั่ง Query นั้นมี่เพียงการรับค่า parameter ทั้งหมด 3 ตัว ได้แก่ data (required) , query (required) และ header(optional) ซึ่งจะอธิบายการทำงานแยกกันเป็นส่วนตามนี้

ตัวอย่างคำสั่ง Query
Caption : ตัวอย่างคำสั่ง Query

    data (required) คือช่วงของข้อมูลบน Google Sheet ที่เราต้องการเลือกมาทำการ Query เช่น A1:D คือการเลือกช่วงข้อมูลตั้งแต่ A1 ไปจนถึง แถวสุดท้ายของ Column D แนะนำให้เลือกแบบนี้ เนื่องจากเวลาที่มีข้อมูลมาเพิ่ม คำสั่ง Query จะทำให้เราแบบอัตโนมัติโดยที่เราไม่ต้องเลือกใหม่

    query (required) คือ คำสั่งที่ใช้ในการค้นหาข้อมูล สามารถเขียนแบบ SELECT A, B ,C ซึ่งการเขียนจะมีการละเว้น FROM เพราะ Google Sheet ได้เลือก data ในหัวข้อที่แล้วเป็น FROM data ให้เราแบบอัตโนมัติ โดยที่ A,B,C จะเป็น Cell Header ที่เราทำการเลือก Column ที่ต้องการ ในกรณีที่ใช้คำสั่ง Query ร่วมกับ Importrange เราจะใช้เป็น Col1 , Col2 ... แทนการเลือก Column แทน

ตัวอย่างการใช้ Header
Caption : ตัวอย่างการใช้ Header

    header (optional) คือ คำสั่งที่ใช้ในกรณีที่ ตารางของเรามีชื่อ คอลัมน์ 2 แถว เช่น CEO , Name ในกรณีที่ใส่เลข 1 จะแสดงผล header เฉพาะ CEO แต่หากใส่เป็น 2 จะได้ผลลัพธ์เป็น CEO Name

3.คำสั่ง Filter

ตัวอย่างคำสั่ง Where Clause
Caption : ตัวอย่างคำสั่ง Where Clause

    คำสั่ง Where clause จะใส่หลังจากคำสั่ง SELECT โดยจะใช้ได้ค่อนข้างจำกัด เช่น Col1 <> 'abc' , Col1 is not null และสามารถใช้ AND และ OR ในการเชื่อม 2 เงื่อนไขได้ แทนที่บางคำสั่งที่ไม่สามารถใช้ได้ เช่น Between , In , like และ การใช้ Operation ที่เกี่ยวกับตัวอักษร ควรจะใช้ Single Quote เสมอ

4.คำสั่ง Group By

หลักการ Group by
Caption : หลักการ Group by

    การใช้ Aggregate Function เช่น การรวม (Sum) จะเป็นการรวมแถวของข้อมูลทำให้ออกมาเป็นตัวเลข แยกตามคอลัมน์อื่น ๆ ที่มีความแตกต่างกัน ตัวอย่างแสดงให้เห็นว่า มีข้อมูลของ Toy ทั้งหมด 2 แถว เมื่อรวมกันก็จะได้เป็น Toy 1 แถว โดยที่ช่อง Revenue จะถูกแสดงผลโดยรวมของแถวที่ 1 และ 2

ตัวอย่างคำสั่ง GROUP BY
Caption : ตัวอย่างคำสั่ง GROUP BY

    กรณีที่มีการเรียกใช้คำสั่ง Group by จะเกิดขึ้นต่อเมื่อมีการใช้ Aggregate function เช่น sum , max ,min และ avg เป็นต้น โดยจะเขียนไว้ด้านหลัง Where clause และ ก่อน Order by เสมอ ตัวอย่างเช่น SELECT B, Sum(D) WHERE B is not null GROUP BY B กล่าวสั้นๆ ก็คือเมื่อเราเลือกใช้ Aggregate function ตัวไหน ตัวนั้นเราจะไม่ใส่ลงใน GROUP BY นั่นเอง

5.คำสั่ง Order By

ตัวอย่างคำสั่ง ORDER BY
Caption : ตัวอย่างคำสั่ง ORDER BY

    คำสั่ง Order by ช่วยในการจัดลำดับข้อมูลจากน้อยไปมาก (Default) ซึ่งจะอยู่หลังคำสั่ง Group by หากมีการใช้งาน Aggregate function เราจะสามารถใช้คำสั่ง order by Col1 desc เพื่อจัดลำดับให้เรียงตัวเลข-ตัวอักษร จาก Col1 จากมากไปน้อย และ desc คือ descending นั่นเอง แต่ถ้าคุณไม่ต้องการเรียงลำดับ ไม่จำเป็นต้องเขียนก็ได้

6.คำสั่ง Alias

    ปกติแล้ว การใช้คำสั่ง Alias หรือแปลงชื่อ Columns ,table ทั่วไปใน SQL เราจะเขียนหลังจาก SELECT Column หรือจาก FROM TABLE ด้วยการพิมพ์ต่อท้ายเป็น as ชื่อคอลัมน์ และสามารถพิมพ์ชื่อ ไปหลังตัวแปรได้เลย เช่น SELECT Col1 as Name , Col2 Company ก็จะได้ชื่อคอลัมน์แรกเป็น Name และ คอลัมน์ที่ 2 เป็น Company ทำได้ทั้งสองวิธี

เปรียบเทียบโครงสร้าง SQL , Google Sheet Query
Caption : เปรียบเทียบโครงสร้าง SQL , Google Sheet Query

    แบบเดียวกันกับ FROM ที่กล่าวไป คือ Google นั้นจัดการ Query แต่ละส่วนให้เราอยู่แล้ว เราจึงเปลี่ยนไปใช้ label Col1'ชื่อที่ต้องการเปลี่ยน'
    ในกรณีที่ต้องการเปลี่ยนค่ามากกว่า 1 ตัว สามารถใช้เป็น label Col1'ชื่อที่ต้องการเปลี่ยน 1' ,Col2 'ชื่อที่ต้องการเปลี่ยน 2' ได้เลย โดยไม่ต้องพิมพ์ label อีกครั้ง

ตัวอย่างคำสั่ง Alias โดยใช้ Label
Caption : ตัวอย่างคำสั่ง Alias โดยใช้ Label

    หากคุณได้ใช้ GROUP BY ตามหัวข้อที่ 4 แล้ว ชื่อที่แสดงผลใน Google Sheet ก็จะเป็น Col1, Col2 และ sum(Col1) ตามลำดับ มันก็คงจะอ่านและตีความคอลัมน์ยากใช่ไหม ดังนั้นเราจึงจะใช้ Label แทนการเปลี่ยนชื่อ คอลัมน์เหล่านั้น โดยจะเขียนในส่วนท้ายสุดเสมอ label Col1 'Name' , Col2 'Department' , sum(Col3) 'Workday' เพียงเท่านี้ข้อมูลของเราก็พร้อมให้คนอื่นได้เอาไปใช้งานต่อแล้ว

7.คำสั่ง Pivot

ตัวอย่างข้อมูล
Caption : ตัวอย่างข้อมูล

    คำสั่ง Pivot จะใช้สำหรับการนำ rows ที่เราต้องการไปแสดงผลแบบเป็น Column โดยจะต้องมี Aggregate function อย่างน้อย 1 ตัวเสมอ โดยคอลัมน์ที่เราต้องการนำไป Pivot จะไม่อยู่ใน SELECT ตามตัวอย่างที่แสดงผลไว้

ตัวอย่างคำสั่ง Pivot
Caption : ตัวอย่างคำสั่ง Pivot

    ตัวอย่างแสดงให้เห็นว่า Column ที่เราต้องการนำไป Pivot ที่จะอยู่ในคำสั่ง pivot ท้ายสุด ส่วนคำสั่ง SELECT จะมีแค่ A และ Sum(D) เท่านั้น

8.สร้างแอพสำหรับดูตารางอันดับฟุตบอล

ดึงข้อมูลด้วย Importhtml
Caption : ดึงข้อมูลด้วย Importhtml

    ใช้คำสั่ง Importhtml ในการดึงข้อมูลจากเว็บที่เราต้องการออกมา จะได้ตัวอย่างตามภาพ โดยที่ข้อมูลจะมีหน้าตาเหมือนกับเว็บไซต์ที่เราดึงมาเลย

สร้าง Dropdown List ด้วยชื่อของทีมฟุตบอล ในช่อง A2 และ C2
Caption : สร้าง Dropdown List ด้วยชื่อของทีมฟุตบอล ในช่อง A2 และ C2

    สร้าง Dropdown List จากคอลัมน์ Team ที่ดึงมาจากขั้นตอนแรก อาจจะใส่สีเพื่อความสวยงาม และให้เลือกใช้ได้ง่าย ๆ

ดึงข้อมูลแบบ Dynamic Query ด้วยการดึง Cell มาอยู่ใน SELECT Statement
Caption : ดึงข้อมูลแบบ Dynamic Query ด้วยการดึง Cell มาอยู่ใน SELECT Statement

    เขียนคำสั่ง Query โดยใช้การเชื่อม Text ด้วย & สำหรับการใส่เงื่อนไขเพิ่มเติม ในกรณีนี้เราต้องการเลือกทีม 2 ทีมมาดูเทียบตารางคะแนนกัน เราสามารถใช้เงื่อนไข OR ในการฟิลเตอร์ได้ง่าย ๆ

ตารางที่สามารถฟิลเตอร์ข้อมูลทีมที่เราต้องการจะดู
Caption : ตารางที่สามารถฟิลเตอร์ข้อมูลทีมที่เราต้องการจะดู

    ลองฟิลเตอร์ดูข้อมูลระหว่างทีม Liverpool กับ Manchester United ก็จะได้ผลลัพธ์ออกมาหน้าตาประมาณนี้ เราสามารถประยุกต์ใช้กับโปรเจคอื่น ๆ ที่สอดคล้องกับงานของเราได้

สามารถดูตัวอย่างวิธีการ Query โดยการ Make a copy ไปได้เลย คลิกที่นี่

สรุปเนื้อหา

    การเขียน Query บน Google Sheet ช่วยลดเวลาในการทำงานด้วย function ปกติ ที่ต้องเขียนหลายๆ function เพื่อจัดการให้ข้อมูลอยู่รูปแบบที่ต้องการได้ และสามารถทำเป็น dynamic query หรือสร้างเป็น application ง่าย ๆ สำหรับให้คนในทีมใช้งานได้แบบสบาย ๆ เลย

No reviews yet. Be the first to leave a comment!

Share your experience with this Blog

0 Reviews

บทความแนะนำ

การทำงานพื้นฐานของเว็บไซต์
How Website work?

เรียนรู้วิธีการทำงานของเว็บไซต์ในทุกขั้นตอน ฉบับมือใหม่

อ่านบทความที่เกี่ยวข้อง
BigQuery Dataset Schema
BigQuery Schema

ตรวจสอบ Dataset และ Table ใน Bigquery Project

อ่านบทความที่เกี่ยวข้อง
SQL Easy ใช้ง่ายนิดเดียว
SQL Basic

ใช้ภาษา SQL เพื่อการทำงานด้าน Data Analytics ขั้นพื้นฐาน

อ่านบทความที่เกี่ยวข้อง