Database SQL – GROUP BY
การใช้งาน SQL Select query statement นอกจากจัดเรียงข้อมูลโดย ORDER BY แล้ เรายังสามารถนำเอาข้อมูลทั้งหมดมาทำการจัดกลุ่มข้อมูลที่มีลักษณะซ้ำกัน เพื่อใช้ในการวิเคราะห์ หรือ ทำรายางานสรุปข้อมูล เราจะใช้คำสั่งที่เรียกว่า SQL Group by statement
รูปแบบ (Syntax)
SQL GROUP BY มักจะใช้งานตามหลัง SQL Select query statement ที่อาจจะใช้ SQL Where Clause ร่วมด้วย และจะใช้นำหน้า SQL ORDER BY หากต้องการจัดเรียงลำดับข้อมูลหลายการจัดกลุ่มด้วย SQL GROUP BY
SELECT column1, column2
FROM table_name
WHERE [ conditions ]
GROUP BY column1, column2
ORDER BY column1, column2;
ตัวอย่างการใช้ GROUP BY
ตัวอย่างข้อมูลใน table CUSTOMERS
+----+----------+-----+-----------+----------+
| ID | NAME | AGE | ADDRESS | SALARY |
+----+----------+-----+-----------+----------+
| 1 | Ramesh | 32 | Ahmedabad | 2000.00 |
| 2 | Khilan | 25 | Delhi | 1500.00 |
| 3 | kaushik | 23 | Kota | 2000.00 |
| 4 | Chaitali | 25 | Mumbai | 6500.00 |
| 5 | Hardik | 27 | Bhopal | 8500.00 |
| 6 | Komal | 22 | MP | 4500.00 |
| 7 | Muffy | 24 | Indore | 10000.00 |
+----+----------+-----+-----------+----------+
การดึงข้อมูลจาก table CUSTOMERS เพื่อแสดง column NAME รวมถึง SALARY รวมทั้งหมดของ NAME เดียวกัน จากการจัดกลุ่ม
SQL> SELECT NAME, SUM(SALARY) FROM CUSTOMERS
GROUP BY NAME;
ผลลัพธ์ที่ได้
+----------+-------------+
| NAME | SUM(SALARY) |
+----------+-------------+
| Chaitali | 6500.00 |
| Hardik | 8500.00 |
| kaushik | 2000.00 |
| Khilan | 1500.00 |
| Komal | 4500.00 |
| Muffy | 10000.00 |
| Ramesh | 2000.00 |
+----------+-------------+
เราจะเห็นการทำงานของ SQL GROUP BY ได้ชัดเจนยิ่งขึ้นจากตัวอย่างที่มี NAME ซ้ำกันหลายบรรทัดเช่น ตัวอย่างข้อมูล ต่อไปนี้
+----+----------+-----+-----------+----------+
| ID | NAME | AGE | ADDRESS | SALARY |
+----+----------+-----+-----------+----------+
| 1 | Ramesh | 32 | Ahmedabad | 2000.00 |
| 2 | Ramesh | 25 | Delhi | 1500.00 |
| 3 | kaushik | 23 | Kota | 2000.00 |
| 4 | kaushik | 25 | Mumbai | 6500.00 |
| 5 | Hardik | 27 | Bhopal | 8500.00 |
| 6 | Komal | 22 | MP | 4500.00 |
| 7 | Muffy | 24 | Indore | 10000.00 |
+----+----------+-----+-----------+----------+
การดึงข้อมูลจาก table CUSTOMERS เพื่อแสดง column NAME รวมถึง SALARY รวมทั้งหมดของ NAME เดียวกัน จากการจัดกลุ่ม
SQL> SELECT NAME, SUM(SALARY) FROM CUSTOMERS
GROUP BY NAME;
ผลลัพธ์ที่ได้ จะเห็นว่ามีการจัดกลุ่มข้อมูล NAME ที่ซ้ำกันให้เหลือบรรทัดเดียว และทำการรวมค่าใน column SALARY จากคำสั่ง SUM(SALARY)
+---------+-------------+
| NAME | SUM(SALARY) |
+---------+-------------+
| Hardik | 8500.00 |
| kaushik | 8500.00 |
| Komal | 4500.00 |
| Muffy | 10000.00 |
| Ramesh | 3500.00 |
+---------+-------------+
Reference:
รวมคำสั่ง SQL Command พื้นฐานเบื้องต้น
Author: Suphakit Annoppornchai
Credit: https://saixiii.com, https://www.tutorialspoint.com
[…] ซึ่งในบทความที่แล้วเราสามารถนำ SQL GROUP BY มาทำการจัดกลุ่มข้อมูลเหล่านี้ได้ […]
[…] SQL GROUP BY ไม่สามารถใช้ใน subquery ได้ แต่ main query สามารถใช้ได้ […]