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 เป็นเพื่อนนะคะ
บทความล่าสุด