본문으로 건너뛰기

เนื้อหาภาษาไทย / 태국어 콘텐츠

시스템 가이드 검수 완료된 콘텐츠

ฟังก์ชัน Aggregate: สรุปข้อมูลด้วย COUNT, SUM, AVG, MIN, MAX

บทความนี้แนะนำฟังก์ชัน Aggregate ใน PostgreSQL ซึ่งเป็นเครื่องมือสำคัญในการสรุปข้อมูลจาก Table โดยจะเน้นที่ 5 ฟังก์ชันพื้นฐาน ได้แก่ COUNT, SUM, AVG, MIN และ MA...

ฟังก์ชัน Aggregate: สรุปข้อมูลด้วย COUNT, SUM, AVG, MIN, MAX

ในบทที่แล้ว เราได้เรียนรู้วิธีการดึงข้อมูลจาก Table ด้วยคำสั่ง SELECT และการใช้เงื่อนไข WHERE เพื่อกรองข้อมูลที่ต้องการ ในบทนี้ เราจะมาเรียนรู้เกี่ยวกับฟังก์ชัน Aggregate ซึ่งเป็นเครื่องมือที่ทรงพลังในการสรุปและวิเคราะห์ข้อมูลใน Table ของเรา

ฟังก์ชัน Aggregate จะทำการคำนวณบนกลุ่มของแถว (row) และคืนค่าผลลัพธ์เพียงค่าเดียว ตัวอย่างเช่น เราสามารถใช้ฟังก์ชัน Aggregate เพื่อนับจำนวนสินค้าทั้งหมดในคลัง, หาผลรวมของยอดขายทั้งหมด, หรือหาค่าเฉลี่ยของราคาสินค้า

ฟังก์ชัน Aggregate ที่ควรรู้

PostgreSQL มีฟังก์ชัน Aggregate ให้เลือกใช้งานมากมาย แต่ในบทนี้ เราจะเน้นที่ฟังก์ชันพื้นฐานและใช้งานบ่อยที่สุด 5 ฟังก์ชัน:

  • COUNT: นับจำนวนแถว
  • SUM: หาผลรวม
  • AVG: หาค่าเฉลี่ย
  • MIN: หาค่าต่ำสุด
  • MAX: หาค่าสูงสุด

เราจะมาดูแต่ละฟังก์ชันอย่างละเอียด พร้อมตัวอย่างการใช้งานจริง

ฟังก์ชัน COUNT: นับจำนวนแถว

ฟังก์ชัน COUNT ใช้เพื่อนับจำนวนแถวใน Table หรือจำนวนแถวที่ตรงตามเงื่อนไขที่กำหนด รูปแบบการใช้งานพื้นฐานคือ:

SELECT COUNT(*) FROM table_name;

COUNT(*) จะนับจำนวนแถวทั้งหมดใน table_name ไม่ว่าจะมีค่า NULL หรือไม่ก็ตาม

ตัวอย่าง: สมมติว่าเรามี Table ชื่อ products ที่เก็บข้อมูลสินค้า:

CREATE TABLE products (
  product_id SERIAL PRIMARY KEY,
  product_name VARCHAR(255),
  price DECIMAL(10, 2),
  stock_quantity INTEGER
);

INSERT INTO products (product_name, price, stock_quantity) VALUES
('เสื้อยืด', 250.00, 50),
('กางเกงยีนส์', 790.00, 30),
('รองเท้าผ้าใบ', 1200.00, 20),
('หมวกแก๊ป', 150.00, 100),
('ถุงเท้า', 50.00, 200);

หากเราต้องการทราบจำนวนสินค้าทั้งหมดใน Table products เราสามารถใช้คำสั่ง:

SELECT COUNT(*) FROM products;

ผลลัพธ์ที่ได้คือ 5 ซึ่งเป็นจำนวนสินค้าทั้งหมดใน Table

การใช้ COUNT ร่วมกับ WHERE: เราสามารถใช้ COUNT ร่วมกับ WHERE เพื่อนับจำนวนแถวที่ตรงตามเงื่อนไขที่กำหนด

SELECT COUNT(*) FROM products WHERE price > 500.00;

คำสั่งนี้จะนับจำนวนสินค้าที่มีราคามากกว่า 500 บาท ผลลัพธ์ที่ได้คือ 2 (กางเกงยีนส์และรองเท้าผ้าใบ)

COUNT(column_name): หากเราต้องการนับจำนวนค่าที่ไม่ใช่ NULL ใน Column ที่ระบุ เราสามารถใช้ COUNT(column_name) ได้

-- สมมติว่าเราเพิ่ม Column 'discount' ซึ่งอาจมีค่า NULL
ALTER TABLE products ADD COLUMN discount DECIMAL(5,2);

INSERT INTO products (product_name, price, stock_quantity, discount) VALUES
('กระเป๋า', 500.00, 15, 0.10); -- มีส่วนลด

SELECT COUNT(discount) FROM products;

คำสั่งนี้จะนับจำนวนแถวที่มีค่าใน Column discount (ที่ไม่ใช่ NULL) ผลลัพธ์ที่ได้คือ 1 (เนื่องจากมีเพียงกระเป๋าที่มีค่าส่วนลด)

ข้อควรจำ: COUNT(*) นับทุกแถว, COUNT(column_name) นับเฉพาะแถวที่มีค่าที่ไม่ใช่ NULL ใน Column นั้นๆ

ฟังก์ชัน SUM: หาผลรวม

ฟังก์ชัน SUM ใช้เพื่อหาผลรวมของค่าใน Column ที่เป็นตัวเลข รูปแบบการใช้งานคือ:

SELECT SUM(column_name) FROM table_name;

ตัวอย่าง: หากเราต้องการหายอดรวมของราคาสินค้าทั้งหมดใน Table products เราสามารถใช้คำสั่ง:

SELECT SUM(price) FROM products;

ผลลัพธ์ที่ได้คือ 2940.00 ซึ่งเป็นผลรวมของราคาสินค้าทั้งหมด (250 + 790 + 1200 + 150 + 50 + 500)

การใช้ SUM ร่วมกับ WHERE: เราสามารถใช้ SUM ร่วมกับ WHERE เพื่อหาผลรวมของค่าที่ตรงตามเงื่อนไขที่กำหนด

SELECT SUM(price) FROM products WHERE stock_quantity < 50;

คำสั่งนี้จะหายอดรวมของราคาสินค้าที่มีจำนวนในคลังน้อยกว่า 50 ชิ้น ผลลัพธ์ที่ได้คือ 1990.00 (790 + 1200)

ข้อควรจำ: SUM จะคืนค่า NULL หากไม่มีแถวใดๆ ตรงตามเงื่อนไข หรือถ้า Column ที่ระบุมีค่าเป็น NULL ทั้งหมด

ฟังก์ชัน AVG: หาค่าเฉลี่ย

ฟังก์ชัน AVG ใช้เพื่อหาค่าเฉลี่ยของค่าใน Column ที่เป็นตัวเลข รูปแบบการใช้งานคือ:

SELECT AVG(column_name) FROM table_name;

ตัวอย่าง: หากเราต้องการหาราคาเฉลี่ยของสินค้าทั้งหมดใน Table products เราสามารถใช้คำสั่ง:

SELECT AVG(price) FROM products;

ผลลัพธ์ที่ได้คือ 490.00 ซึ่งเป็นราคาเฉลี่ยของสินค้าทั้งหมด (2940 / 6)

การใช้ AVG ร่วมกับ WHERE: เราสามารถใช้ AVG ร่วมกับ WHERE เพื่อหาค่าเฉลี่ยของค่าที่ตรงตามเงื่อนไขที่กำหนด

SELECT AVG(price) FROM products WHERE stock_quantity > 50;

คำสั่งนี้จะหาราคาเฉลี่ยของสินค้าที่มีจำนวนในคลังมากกว่า 50 ชิ้น ผลลัพธ์ที่ได้คือ 100.00 (150 + 50 / 2)

ข้อควรจำ: AVG จะคืนค่า NULL หากไม่มีแถวใดๆ ตรงตามเงื่อนไข หรือถ้า Column ที่ระบุมีค่าเป็น NULL ทั้งหมด

ฟังก์ชัน MIN และ MAX: หาค่าต่ำสุดและค่าสูงสุด

ฟังก์ชัน MIN ใช้เพื่อหาค่าต่ำสุดใน Column ที่ระบุ และฟังก์ชัน MAX ใช้เพื่อหาค่าสูงสุดใน Column ที่ระบุ รูปแบบการใช้งานคือ:

SELECT MIN(column_name) FROM table_name;
SELECT MAX(column_name) FROM table_name;

ตัวอย่าง: หากเราต้องการหาราคาสินค้าที่ถูกที่สุดและแพงที่สุดใน Table products เราสามารถใช้คำสั่ง:

SELECT MIN(price) AS cheapest_price, MAX(price) AS most_expensive_price FROM products;

ผลลัพธ์ที่ได้คือ cheapest_price: 50.00 และ most_expensive_price: 1200.00

การใช้ MIN และ MAX ร่วมกับ WHERE: เราสามารถใช้ MIN และ MAX ร่วมกับ WHERE เพื่อหาค่าต่ำสุดและค่าสูงสุดของค่าที่ตรงตามเงื่อนไขที่กำหนด

SELECT MIN(price) FROM products WHERE product_name LIKE '%เสื้อ%';

คำสั่งนี้จะหาราคาสินค้าที่ถูกที่สุดที่มีคำว่า "เสื้อ" ในชื่อ ผลลัพธ์ที่ได้คือ 250.00

ข้อควรจำ: MIN และ MAX สามารถใช้กับ Column ที่เป็นตัวเลข, ข้อความ, หรือวันที่ได้

สรุป

ในบทนี้ เราได้เรียนรู้เกี่ยวกับฟังก์ชัน Aggregate พื้นฐาน 5 ฟังก์ชัน: COUNT, SUM, AVG, MIN, และ MAX ซึ่งเป็นเครื่องมือที่สำคัญในการสรุปและวิเคราะห์ข้อมูลในฐานข้อมูล PostgreSQL การเข้าใจและใช้งานฟังก์ชันเหล่านี้จะช่วยให้เราสามารถดึงข้อมูลเชิงลึกจากฐานข้อมูลของเราได้อย่างมีประสิทธิภาพ

ในบทต่อไป เราจะมาเรียนรู้เกี่ยวกับ JOIN ซึ่งเป็นวิธีการรวมข้อมูลจากหลาย Table เข้าด้วยกัน เพื่อให้เราสามารถสร้างรายงานและวิเคราะห์ข้อมูลที่ซับซ้อนยิ่งขึ้น

Office.in.th Custom Service

이 구조를 바탕으로 시스템을 개발하거나 맞춤 변경하고 싶으신가요?

Office.in.th는 엔터프라이즈 웹 애플리케이션, API 연동, 공공/민간 업무 관리 시스템을 설계·개발하며 장기 지원을 제공합니다.

소프트웨어 개발 서비스 보기