10 SQL Queries ที่ Data Scientist ควรทำความเข้าใจ

10-มิ.ย.-22

คัมภีร์เทพ IT

Structured Query Language หรือ SQL เป็นภาษาที่ใช้ในการจัดการกับ Database ที่ง่ายต่อการอ่านและเขียน และเราคงรู้ดีอยู่แล้วว่าปัจจุบัน Data มีความสำคัญมากแค่ไหน ซึ่งในบทความนี้ คุณจะได้เห็นตัวอย่างของ SQL Query ทั้งในระดับพื้นฐานและขั้น Advance ที่ถูกใช้งานในแวดวง Data และนี่ก็เป็น 10 SQL Queries ที่ Data Scientist ควรทำความเข้าใจ (หมายเหตุ: ตัวอย่าง Queries ในบทความนี้ถูกเขียนใน PostgreSQL)

1. Select All Columns

หากคุณต้องการ Select ทั้งหมดทุก Fields ที่มีอยู่ใน Table สามารถใช้ Syntax * ซึ่งจะช่วยให้เรา Select ทุก Columns ใน Table

2. Where Statement

เราสามารถใช้ WHERE clause ในการ Filter Data ตาม Statement ที่กำหนด

ตัวอย่าง: เขียน Query เพื่อแสดง Variables ทั้งหมดของ Sports Department

3. Group by and Having Clause

Group By clause จะช่วยจัดกลุ่ม Rows ที่มี Values เดียวกัน

ตัวอย่าง: Salary ทั้งหมดของแต่ละ Department เป็นเท่าไหร่?

ใน SQL เรามี Aggregation Functions ไม่ว่าจะเป็น SUM, AVG, MAX, MIN และ COUNT ไม่สามารถถูกใช้งานใน WHERE clause หากเราต้องการ Filter Table ของเราด้วย Aggregation Function เราจำเป็นต้องใช้ HAVING clause

ตัวอย่าง: มี Department ใดบ้าง ที่มี Employees มากกว่า 50 คน

4. Order By and Limit

ตัวอย่าง: หา Total Salary ของแต่ละ Department และ Sort จากมากไปน้อยตาม Column ของ Total Salary

หมายเหตุ: คุณสามารถใช้ Alias ได้ในกรณีที่ใช้คำสั่ง Order By

คุณสามารถใช้คำสั่ง Limit เพื่อกำหนดจำนวน Records ที่จะแสดงผลออกมา

ตัวอย่าง: เขียน Query ที่ค้นหา Employees 5 คนแรกด้วย first_name, department และ salary และจัดเรียงตาม first_name ของพวกเขา

หมายเหตุ: โดยค่า Default เมื่อใช้คำสั่ง Order By มันจะเรียงลำดับผลลัพธ์จากน้อยไปมาก

5. Date Functions

ใน PostgreSQL คุณสามารถดึงค่าจาก Date Columns ได้อย่างง่ายดาย คุณจะเห็น Date Functions ที่มักถูกใช้งานบ่อย ๆ ตามด้านล่างนี้

6. Inner, Left or Right Joins

Inner Join clause จะทำการสร้าง Table ใหม่ (แต่ไม่ได้สร้างใหม่จริง) โดยการรวบรวม Rows ที่มีค่า Match กันตามเงื่อนไขใน Table ตั้งแต่ 2 Tables ขึ้นไป

ตัวอย่าง: Query ข้อมูล Employee ทั้งหมดและ Divisions ในแต่ละ Department ของพวกเขา

หมายเหตุ: Table สีน้ำเงินคือ Table ที่ 1 และ Table สีเขียวคือ Table ที่ 2

ส่วน Left Join จะ Return Rows ทั้งหมดจาก Left Table และ Rows ที่ Match กันจาก Right Table หากไม่พบ Rows ที่ Match กันใน Right Table ก็จะใช้ NULL แทน (และจะทำในทางกลับกันสำหรับ Right Join)

ตัวอย่าง: เขียน Query ที่แสดง Departments ทั้งหมดจาก Employees และ Matches Departments จาก Department Table

7. Subqueries

Subquery เป็น SQL Query ที่ซ้อนอยู่ภายใน Query ตัวหลักอีกทอดหนึ่ง

Subquery อาจเกิดขึ้นใน:

  • SELECT clause
  • FROM clause
  • WHERE clause

ตัวอย่าง: ทำการ Query first_name, department และ salary ของ Employee แต่ละคน รวมทั้ง salary ที่สูงสุด

8. Correlated Subqueries

Correlated Subquery เป็นวิธีหนึ่งในการอ่านทุก Rows ใน Table และเปรียบเทียบค่าในแต่ละ Rows กับ Data ที่เกี่ยวข้อง และเมื่อใดก็ตามที่ใช้สิ่งนี้ Subquery จะต้อง Return ผลลัพธ์หรือชุดของผลลัพธ์ที่แตกต่างกัน สำหรับแต่ละ Rows ของ Query ตัวหลัก

ตัวอย่าง: เขียน Query ที่ first_name, salary, department และ average salary ตาม Department

9. Case When Clause

CASE Statement ถูกใช้ในตรรกะที่คุณต้องการตั้งค่าของ Column หนึ่งโดยขึ้นอยู่กับค่าในอีก Column อื่น

ที่จริงมันก็คล้ายกับ IF-ELSE Statement ใน Excel

ตัวอย่าง: เขียน Query เพื่อแสดง first_name, salary และ average salary รวมทั้งอีกหนึ่ง Column เพื่อแสดงว่า salary ของ Employee คนนั้น ๆ สูงกว่าหรือต่ำกว่า average salary

10. Window Functions

Window Functions จะใช้ Aggregate และ Ranking Functions บน Particular Window (Set ของ Rows) คำสั่ง OVER จะใช้กับ Window Functions เพื่อกำหนด Window นั้น

คำสั่ง OVER จะทำ 2 สิ่ง ประกอบไปด้วย:

  • แบ่ง Partition Rows ออกเป็นชุด ๆ  (ใช้ PARTITION BY clause)
  • เรียงลำดับ Rows ที่อยู่ภายในแต่ละ Partition นั้น ๆ ตาม Order ที่กำหนดไว้ (ใช้ ORDER BY clause)

Aggregate Functionsต่าง ๆ ไม่ว่าจะเป็น SUM(), COUNT(), AVERAGE(), MAX() และ MIN() ที่ใช้กับ Particular Window (Set ของ Rows) จะถูกเรียกว่า Aggregate Window Functions 

10.1   Aggregation Examples

Query ต่อไปนี้ จะทำให้คุณได้ average salary สำหรับแต่ละ Department

10.2   Ranking the Values

Rank() Function เป็น Window Function ที่กำหนดอันดับ (Rank) ให้กับแต่ละ Row ที่อยู่ภายใน Partition ของแต่ละชุดผลลัพธ์

ตัวอย่างต่อไปนี้ จะเป็นการ Order Table ตาม salary (จากมากไปหาน้อย) โดยค่าลำดับที่ 1 ก็คือ salary ที่มีค่าสูงสุด

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

 

 

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

 

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

เพิ่มเพื่อน

 

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