มาทำความรู้จักกับ Aggregate Functions

25-ธ.ค.-19

คัมภีร์เทพ IT

Aggregate Functions จะอนุญาตให้คุณใช้ Standard Table และใช้บาง Function ในการสร้าง Metrics รวมทั้งช่วยคุณตอบคำถามต่าง ๆ เกี่ยวกับ Data หากคุณคุ้นเคยกับ Pivot Tables หรือ Excel Functions มาบ้างแล้ว พวกคำศัพท์เฉพาะต่าง ๆ จะมีความคล้ายคลึงกัน ซึ่งน่าจะทำให้คุณจะสามารถใช้งานได้สะดวกขึ้น และในบทความนี้เราจะ มาทำความรู้จักกับ Aggregate Functions กัน

บทนำ

ในตัวอย่างนี้  จะใช้ Subset ของ Billboard Top 100 Dataset ที่มีอยู่ใน Kaggle โดยจะขอ Load Row ของยุค 90s ลงใน Table ที่ชื่อว่า music_charts ใน SQL Server

ก่อนอื่น เรามาดูสิ่งที่เราต้องจัดการกันก่อน:

จะเห็นว่า Table ถูก Load ออกมาโดยมี 4 Column ที่เราต้องการ แต่หากเราต้องการหาตอบคำถามเกี่ยวกับเพลงในยุค 90 ว่าศิลปินใดคือคนที่อยู่ในอันดับต้น ๆ ของ Chart ทำเราต้องใช้ Aggregate Functions เข้ามาช่วยด้วย

COUNT

วิธีแรกในการสำรวจ Dataset ชุดนี้ก็คือ การใช้ COUNT เพื่อดูว่ามันมีขนาดใหญ่แค่ไหน สิ่งนี้ก็คล้ายกับ COUNT Function ใน Excel ซึ่งมันทำงานในลักษณะเดียวกัน

Function นี้ จะนับ Row ทั้งหมดแล้วจะ Return กลับมาให้ ในกรณีนี้คือ 1,000 ผลลัพธ์ ซึ่งมาจาก Data จำนวน 10 ปี ปีละ 100 Rows นั่นคือ Data ทั้งหมดที่มีและเราก็พร้อมที่จะนำไปทำอย่างอื่นต่อ

COUNT DISTINCT

ถัดไป เราอยากจะทราบว่า มีศิลปินกี่คนใน Table นี้ เราจะเห็นได้ว่า ศิลปินที่ติด Top Chart นั้น มีการ Duplicate หรือเป็นศิลปินที่มีรายชื่อซ้ำกัน

เราสามารถทำได้โดยใช้การ COUNT ด้วย DISTINCT:

มันจะ Return จำนวน COUNT ของ 545 ศิลปินที่ไม่ซ้ำกันจาก Table แต่ข้อมูลเหล่านี้อาจยังไม่มีประโยชน์มากเท่าไรนัก ดังนั้นเราต้องเพิ่ม Column เข้าไปด้วย

Filtering โดยใช้ GROUP BY

มันเป็นเรื่องดี หากเรามีข้อมูลที่เป็นข้อเท็จจริงและตัวเลขประกอบ แต่มันจะมีประโยชน์มากกว่า หากเราสามารถตอบคำถามได้ เช่น “ศิลปินคนไหน ที่โดดเด่นที่สุดใน Top 100 Charts ของยุค 90s”

เช่นเดียวกับ Pivot Table ใน Excel เราสามารถทำเช่นเดียวกันได้ โดยเพิ่ม Column เข้าไป

อย่างไรก็ตาม มันก็ไม่ได้ง่ายเหมือนการหย่อนข้อมูลลงไปใน Column หากเรา Run Query นี้ เราก็จะจบกับ Error:

เราอาจจำเป็นต้องพูดให้ชัดเจนยิ่งขึ้นว่า เราต้องการให้ศิลปินทุกคนถูกรวมอยู่ใน Row เดียว โดยให้นับรวมเข้าไปใน artist_count Column ซึ่งเราสามารถทำสิ่งนี้โดยการใช้ GROUP BY

ORDER BY

ตอนนี้เรากำลังเข้าใกล้คำตอบที่ต้องการกันแล้ว แต่เราอาจต้องการทำอะไรบางอย่างเพิ่มเติมอีก

โดยการใช้ Order by ใน artist_count เราจะเห็นได้ว่า Mariah Carey มีจำนวนที่ปรากฏมากที่สุดใน Dataset

GROUP BY หลาย ๆ columns

ตอนนี้เราได้เรียนรู้ Synatx เพิ่มเติมที่จะช่วยให้เราสามารถเจาะลึกลงไปใน Data มากขึ้น และตอบคำถามอย่างเช่น “มีเพลงของ Mariah Carey เพลงใดบ้าง ที่ติด Top 100 Charts ในยุค 90s มากที่สุด”

HAVING

สิ่งสุดท้ายที่จะใช้ก็คือ HAVING สิ่งนี้ช่วยให้เราสามารถกำหนดเงื่อนไขในการ Aggregate สิ่งนี้แตกต่างจากการใช้ WHERE ซึ่งเป็นการใช้เงื่อนไขกับในแต่ละ Row

เพื่อแสดงให้เห็นถึงวิธีการทำงานของมันได้ดีขึ้น ลองใช้ตัวอย่างที่เราต้องการเห็นว่า “มีศิลปินคนไหน ที่ติด Chart มากกว่า 5 ครั้ง”

เรานับจำนวนศิลปิน แล้วใช้ HAVING เป็นขั้นตอนสุดท้ายเพื่อทำการ Filter จำนวนใน artist_count Column

ประเภทของ Function ที่คุณสามารถนำไปใช้งงานได้

มันไม่ได้มีแค่เรื่องการ Count สิ่งต่าง ๆ เพียงเท่านั้น ยังมีเรื่องอื่น ๆ ที่คุณสามารถนำไปใช้งานได้มากมาย

Aggregate Functions พื้นฐานที่สามารถนำไปใช้ในงานในชีวิตประจำวันกับ SQL Server ได้ก็คือ

  • COUNT,
  • MIN,
  • MAX,
  • SUM,
  • AVG

แค่นี้ คุณก็สามารถดูข้อมูลที่เป็นประโยชน์จาก Dataset ในยุค 90s ได้ตามที่คุณต้องการแล้ว

ที่มา:  https://dev.to/

 

 

รับตำแหน่งงานไอทีใหม่ๆ ด้วยบริการ IT Job Alert

 

อัพเดทบทความจากคนวงในสายไอทีทาง LINE ก่อนใคร
อย่าลืมแอดไลน์ @techstarth เป็นเพื่อนนะคะ

เพิ่มเพื่อน

 

บทความล่าสุด