Aggregate functions ใน SQL ใช้ในการประมวลผลชุดข้อมูลและคืนค่าผลลัพธ์เป็นค่าเดียว ตัวอย่างเช่น การคำนวณผลรวม (SUM), ค่าเฉลี่ย (AVG), ค่ามากที่สุด (MAX), ค่าน้อยที่สุด (MIN), และการนับจำนวนแถว (COUNT)
สร้างตารางตัวอย่าง
สมมติว่ามีตารางชื่อ Sales ที่เก็บข้อมูลการขายสินค้าดังนี้
CREATE TABLE Sales (
SaleID INT,
ProductName VARCHAR(50),
Quantity INT,
Price DECIMAL(10, 2),
SaleDate DATE
);
INSERT INTO Sales (SaleID, ProductName, Quantity, Price, SaleDate) VALUES
(1, 'Laptop', 5, 1200.00, '2024-01-01'),
(2, 'Mouse', 10, 25.50, '2024-01-02'),
(3, 'Keyboard', 6, 45.00, '2024-01-03'),
(4, 'Monitor', 3, 300.00, '2024-01-04'),
(5, 'Laptop', 2, 1200.00, '2024-01-05');
การใช้งาน Aggregate Functions
SUM (หาผลรวม)
ฟังก์ชัน SUM ใช้ในการหาผลรวมของค่าในคอลัมน์ที่เป็นตัวเลข
SELECT SUM(Quantity) AS TotalQuantity FROM Sales;ผลลัพธ์
TotalQuantity
-------------
26
จากตารางตัวอย่าง จะรวมค่าในคอลัมน์ Quantity ได้ผลรวมเป็น 26
AVG (หาค่าเฉลี่ย)
ฟังก์ชัน AVG ใช้ในการหาค่าเฉลี่ยของข้อมูล
SELECT AVG(Price) AS AveragePrice FROM Sales;ผลลัพธ์
AveragePrice
------------
554.10
ได้ผลลัพธ์เป็นค่าเฉลี่ยของราคาสินค้า
MAX (หาค่ามากที่สุด)
ฟังก์ชัน MAX ใช้ในการหาค่ามากที่สุดในคอลัมน์
SELECT MAX(Price) AS MaxPrice FROM Sales;ผลลัพธ์
MaxPrice
--------
1200.00
ราคาสินค้าที่แพงที่สุดคือ 1200
MIN (หาค่าน้อยที่สุด)
ฟังก์ชัน MIN ใช้ในการหาค่าน้อยที่สุดในคอลัมน์
SELECT MIN(Price) AS MinPrice FROM Sales;ผลลัพธ์
MinPrice
--------
25.50
ราคาสินค้าที่ถูกที่สุดคือ 25.50
COUNT (นับจำนวนแถว)
ฟังก์ชัน COUNT ใช้ในการนับจำนวนแถวที่มีข้อมูล
SELECT COUNT(SaleID) AS NumberOfSales FROM Sales;ผลลัพธ์
NumberOfSales
-------------
5
มีการขายทั้งหมด 5 รายการ
การประยุกต์ใช้งาน GROUP BY ร่วมกับ Aggregate Functions
การใช้ GROUP BY เพื่อการประมวลผลข้อมูลแบบกลุ่ม
ในบางกรณีเราต้องการรวมข้อมูลเป็นกลุ่มตามค่าบางคอลัมน์ เช่น การนับจำนวนสินค้าที่ขายแยกตามชื่อสินค้า
SELECT ProductName, SUM(Quantity) AS TotalQuantity
FROM Sales
GROUP BY ProductName;ผลลัพธ์

ผลลัพธ์นี้แสดงผลรวมของจำนวนสินค้าที่ขายในแต่ละประเภทของสินค้า
การใช้ HAVING กรองผลลัพธ์หลังจากใช้ GROUP BY
สามารถกรองข้อมูลได้โดยใช้ HAVING โดยใช้กับผลลัพธ์ที่ผ่านการประมวลผลด้วย aggregate functions
SELECT ProductName, SUM(Quantity) AS TotalQuantity
FROM Sales
GROUP BY ProductName
HAVING SUM(Quantity) > 5;ผลลัพธ์

ฟังก์ชันนี้จะเลือกเฉพาะสินค้าที่มีการขายรวมเกิน 5 หน่วย
สรุป Aggregate Functions ที่นิยมใช้งาน
SUM()– หาผลรวมAVG()– หาค่าเฉลี่ยMAX()– หาค่ามากที่สุดMIN()– หาค่าน้อยที่สุดCOUNT()– นับจำนวนแถว
ทั้งนี้สามารถประยุกต์ใช้งานร่วมกับ GROUP BY และ HAVING เพื่อให้ได้ผลลัพธ์ที่ต้องการตามเงื่อนไขที่ซับซ้อนขึ้น
