ฟังก์ชัน aggregate คำนวณค่าเดียวจากชุดของแถว — COUNT, SUM, AVG, MIN, MAX มันจำเป็นสำหรับการสรุปข้อมูล (ยอดรวม ค่าเฉลี่ย จำนวนนับ) โดยเฉพาะเมื่อใช้ร่วมกับ
ฟังก์ชัน aggregate คำนวณค่าเดียวจากชุดของแถว — COUNT, SUM, AVG, MIN, MAX มันจำเป็นสำหรับการสรุปข้อมูล (ยอดรวม ค่าเฉลี่ย จำนวนนับ) โดยเฉพาะเมื่อใช้ร่วมกับ
GROUP BYSELECT
COUNT(*) AS total_rows, -- count all rows
COUNT(email) AS rows_with_email, -- count NON-NULL emails (ignores NULLs!)
SUM(amount) AS total_amount, -- sum of a column
AVG(price) AS average_price, -- average
MIN(price) AS lowest, -- minimum
MAX(price) AS highest -- maximum
FROM orders;
แต่ละฟังก์ชันจะย่อหลายแถวให้เหลือค่าเดียว SUM/AVG ทำงานกับตัวเลข; MIN/MAX ทำงานกับตัวเลข วันที่ หรือข้อความ; COUNT ทำงานกับอะไรก็ได้
COUNT(*) -- counts ALL rows (including those with NULLs)
COUNT(email) -- counts only rows where email is NOT NULL
COUNT(DISTINCT country) -- counts UNIQUE non-null values
COUNT(*) นับทุกแถว แต่ COUNT(column) นับเฉพาะแถวที่คอลัมน์นั้นไม่เป็น NULL — เป็นความแตกต่างที่ละเอียดอ่อนแต่สำคัญ ส่วน COUNT(DISTINCT col) นับค่าที่ไม่ซ้ำกัน
-- aggregate PER GROUP instead of the whole table
SELECT country, COUNT(*) AS users, AVG(age) AS avg_age
FROM users
GROUP BY country; -- one result row per country
-- → for each country: how many users and their average age
หากไม่มี GROUP BY ฟังก์ชัน aggregate จะสรุปผลลัพธ์ทั้งหมดให้เหลือแถวเดียว แต่เมื่อมี GROUP BY มันจะสร้างแถวสรุปหนึ่งแถวต่อกลุ่ม — เป็นการใช้งานทั่วไปที่ทรงพลัง
-- ❌ ERROR — can't mix an aggregate with a non-grouped column
SELECT name, COUNT(*) FROM users; -- which name? ambiguous
-- ✅ either group by it, or only select aggregates
SELECT country, COUNT(*) FROM users GROUP BY country;
ฟังก์ชัน aggregate จำเป็นสำหรับการสรุปและวิเคราะห์ข้อมูล — การคำนวณยอดรวม ค่าเฉลี่ย จำนวนนับ และค่าสุดขีดเป็นความต้องการที่เกิดขึ้นตลอดในการทำรายงาน การวิเคราะห์ แดชบอร์ด และตรรกะของแอปพลิเคชัน ดังนั้นการเข้าใจมันจึงเป็นความรู้ SQL พื้นฐาน
การรู้จักฟังก์ชันหลัก (COUNT, SUM, AVG, MIN, MAX) และวิธีที่มันย่อชุดของแถวให้เหลือค่าเดียวเป็นสิ่งจำเป็นสำหรับการสรุปข้อมูลใด ๆ
รายละเอียดที่สำคัญและมักเข้าใจผิดบ่อยคือ ความแตกต่างระหว่าง COUNT(*) กับ COUNT(column) (COUNT(*) นับทุกแถว, COUNT(column) นับเฉพาะค่าที่ไม่เป็น NULL — ซึ่งอาจให้ผลลัพธ์ที่ต่างกันและน่าประหลาดใจ) พร้อมกับ COUNT(DISTINCT) สำหรับค่าที่ไม่ซ้ำกัน
ที่ทรงพลังที่สุดคือ aggregate รวมกับ GROUP BY เพื่อสร้างสรุปแบบต่อกลุ่ม (จำนวนนับ/ค่าเฉลี่ยต่อหมวดหมู่) — เป็นรากฐานของ query เชิงวิเคราะห์
การเข้าใจ กับดัก ที่ว่าคุณไม่สามารถผสม aggregate กับคอลัมน์ที่ไม่ได้จัดกลุ่มได้ (เป็นข้อผิดพลาดที่พบบ่อย) ก็สำคัญเช่นกัน
เนื่องจากการสรุปข้อมูลเป็นงานฐานข้อมูลที่พบได้ทุกที่ (ทุกรายงาน แดชบอร์ด และ query เชิงวิเคราะห์ล้วนใช้ aggregate) และเนื่องจากการเข้าใจฟังก์ชัน รายละเอียดปลีกย่อยของ COUNT และโดยเฉพาะการรวมกับ GROUP BY เป็นพื้นฐานต่อการวิเคราะห์ข้อมูลใน SQL การเชี่ยวชาญฟังก์ชัน aggregate จึงเป็นความรู้หลักที่นำไปใช้บ่อยและจำเป็นต่อการทำงานกับข้อมูล — เป็นสะพานเชื่อมระหว่างการ query พื้นฐานกับพลังเชิงวิเคราะห์และการสรุปที่ทำให้ SQL มีคุณค่าสำหรับการทำรายงานและการค้นพบเชิงลึก
คลังคำถามสัมภาษณ์งาน IT พร้อมคำตอบโดยละเอียด — ตั้งแต่ระดับ Junior ถึง Senior
บริจาค