Company insights

Window Function PostgreSQL สำหรับการวิเคราะห์ข้อมูลขั้นสูง


หนึ่งในความสามารถที่ทรงพลังของ PostgreSQL คือ Window Function ซึ่งช่วยให้เราสามารถวิเคราะห์ข้อมูลภายในชุดข้อมูลเดียวกันได้โดยไม่ต้องใช้ Subquery ที่ซับซ้อนมาก Window Function มักถูกใช้ในงาน Data Analytics, Reporting และ Business Intelligence


ความแตกต่างระหว่าง Aggregate Function ปกติกับ Window Function คือ Aggregate จะรวมข้อมูลให้เหลือเพียงค่าเดียว แต่ Window Function จะยังคงแสดงข้อมูลทุกแถว พร้อมกับค่าที่คำนวณเพิ่มขึ้นมา

ตัวอย่าง Table


CREATE TABLE sales (
id SERIAL PRIMARY KEY,
employee_name VARCHAR(100),
sale_amount NUMERIC,
sale_date DATE
);


สมมติว่ามีข้อมูลยอดขายของพนักงานหลายคน เราต้องการวิเคราะห์ข้อมูล เช่น


  • อันดับยอดขายของพนักงาน

  • ยอดขายสะสม

  • ค่าเฉลี่ยยอดขาย

1. การจัดอันดับยอดขาย (Ranking)


เราสามารถใช้ Window Function ชื่อ RANK() เพื่อจัดอันดับยอดขายได้


SELECT
employee_name,
sale_amount,
RANK() OVER (ORDER BY sale_amount DESC) AS sale_rank
FROM sales;


คำสั่งนี้จะจัดอันดับยอดขายจากมากไปน้อย โดยไม่ต้องใช้ Subquery

2. คำนวณยอดขายสะสม (Running Total)


เราสามารถคำนวณยอดขายสะสมตามวันที่ได้ด้วยคำสั่ง SUM() OVER()


SELECT
sale_date,
sale_amount,
SUM(sale_amount)
OVER (ORDER BY sale_date) AS running_total
FROM sales;


ผลลัพธ์จะเป็นยอดขายสะสมตามลำดับวันที่ ซึ่งเหมาะกับการทำ Dashboard หรือรายงานยอดขาย

3. ค่าเฉลี่ยยอดขายของพนักงานแต่ละคน


SELECT
employee_name,
sale_amount,
AVG(sale_amount)
OVER (PARTITION BY employee_name) AS avg_sale
FROM sales;


คำสั่ง PARTITION BY จะช่วยแบ่งกลุ่มข้อมูลก่อนคำนวณค่า Window Function

4. การใช้ LAG และ LEAD


ฟังก์ชัน LAG และ LEAD ช่วยให้เราสามารถดึงข้อมูลจากแถวก่อนหน้า หรือแถวถัดไปได้


SELECT
sale_date,
sale_amount,
LAG(sale_amount) OVER (ORDER BY sale_date) AS previous_sale
FROM sales;


ฟังก์ชันนี้มักใช้สำหรับวิเคราะห์แนวโน้ม เช่น เปรียบเทียบยอดขายของวันก่อนหน้า

สรุป


Window Function เป็นหนึ่งในฟีเจอร์ที่ทำให้ PostgreSQL มีความสามารถสูงในด้าน Data Analytics และ Reporting นักพัฒนาสามารถใช้ฟังก์ชันเหล่านี้เพื่อสร้าง Query ที่ทรงพลังโดยไม่ต้องใช้ Subquery ซ้อนหลายชั้น


หากต้องการพัฒนาระบบวิเคราะห์ข้อมูล เช่น Dashboard หรือระบบ Business Intelligence การเรียนรู้ Window Function ถือเป็นทักษะสำคัญสำหรับนักพัฒนา PostgreSQL