SQL aggregate functions ดึงข้อมูลเกี่ยวกับข้อมูลในฐานข้อมูล เช่น ใช้ COUNT หาจำนวนเรคอร์ด ฟังก์ชันที่รองรับ: COUNT, MIN, MAX, AVG, และ SUM
บางครั้งต้องการข้อมูลเกี่ยวกับข้อมูล (metadata) ไม่ใช่ข้อมูลโดยตรง เช่น ต้องการรู้ว่ามีพนักงานกี่คนในแต่ละสำนักงาน หรือใครทำงานนานที่สุด นี่คือที่มาของ SQL aggregate functions
ในคู่มือนี้ เราจะพูดถึงพื้นฐาน SQL aggregate functions การทำงาน และวิธีใช้ในคิวรี่
หมายเหตุ: เราใช้ PostgreSQL สำหรับบทความนี้
SQL Aggregate Functions
SQL aggregate functions รวบรวมข้อมูลเกี่ยวกับสิ่งที่อยู่ในฐานข้อมูล เช่น ใช้ SUM หาผลรวมค่าในคอลัมน์ Aggregate functions ประหยัดเวลาเมื่อต้องการข้อมูลที่เกี่ยวกับการรวมเรคอร์ด
รายการ aggregate functions ใน SQL ที่ใช้ได้:
- COUNT
- SUM
- AVG
- MIN
- MAX
มาดูแต่ละฟังก์ชันอย่างละเอียด เราจะอ้างอิงฐานข้อมูลพนักงานตลอดบทช่วยสอน
Aggregate functions ใช้ที่ต้นคำสั่ง SQL SELECT
SQL COUNT
ฟังก์ชัน SQL COUNT คืนจำนวนแถวทั้งหมดที่คิวรี่คืนค่า ด้วยคำสั่ง WHERE, COUNT คืนจำนวนแถวที่ตรงเงื่อนไข
เช่น ต้องการรู้ว่ามีพนักงานกี่คนในสาขา Stamford ใช้คิวรี่:
SELECT COUNT(name) FROM employees WHERE branch = "Stamford";
ผลลัพธ์:
| count |
| 1 |
(1 แถว)
SQL MIN และ MAX
ฟังก์ชัน SQL MIN คืนค่าน้อยที่สุดในคอลัมน์ คำสั่ง SQL MAX คืนค่ามากที่สุดในคอลัมน์ ทั้งคู่เป็น aggregate functions
เช่น ต้องการจำนวนรางวัล "พนักงานเดือน" น้อยที่สุดที่บุคคลใดบุคคลหนึ่งครอง ใช้คิวรี่:
SELECT MIN(employee_month_awards) FROM employees;
ผลลัพธ์:
| min |
| 1 |
(1 แถว)
ถ้าต้องการจำนวนมากที่สุด ใช้ MAX แทน:
SELECT MAX(employee_month_awards) FROM employees;
ผลลัพธ์:
| max |
| 6 |
(1 แถว)
สังเกต: MIN และ MAX ใช้ได้กับข้อมูลตัวเลขและตัวอักษร (alphabetic) ในฐานข้อมูล
หากต้องการชื่อที่มาก่อนในลำดับอักษร ใช้ MIN(name) หากต้องการชื่อสุดท้าย ใช้ MAX(name)
SQL AVG
ฟังก์ชัน SQL AVG คืนค่าเฉลี่ยของคอลัมน์เฉพาะ
สมมติต้องการค่าเฉลี่ยรางวัล "พนักงานเดือน" ต่อพนักงาน ใช้คิวรี่:
SELECT AVG(employee_month_awards) FROM employees;
ผลลัพธ์:
| avg |
| 4 |
(1 แถว)
SQL SUM
ฟังก์ชัน SQL SUM หาผลรวมของคอลัมน์เฉพาะ
สมมติต้องการรู้ว่ามีรางวัล "พนักงานเดือน" ออกให้ไปทั้งหมดกี่รางวัล ใช้ SQL SUM:
SELECT SUM(employee_month_awards) FROM employees;
ผลลัพธ์:
| sum |
| 20 |
(1 แถว)
สรุป
SQL aggregate functions คืนข้อมูลเกี่ยวกับข้อมูลในฐานข้อมูล AVG ตัวอย่างคืนค่าเฉลี่ยของคอลัมน์ มี 5 aggregate functions: MIN, MAX, COUNT, SUM, และ AVG
พร้อมท้าทาย?
เขียน aggregate function หาจำนวนพนักงานชื่อ "Linda" เปรียบเทียบกับคิวรี่ข้างต้นดูว่าสมเหตุสมผลไหม
เราเขียนคู่มือครบถ้วน How to Learn SQL หากหาแหล่งเรียนรู้ใหม่ ดูที่หน้า How to Learn SQL