ใน SQL ผลรวมสะสมหมายถึงวิธีการที่ช่วยให้เราคำนวณผลรวมสะสมของคอลัมน์ตัวเลขภายในตารางฐานข้อมูล ผลรวมสะสมมีบทบาทในสถานการณ์ต่างๆ มากมาย เช่น การติดตามความคืบหน้า หรือการคำนวณค่าเฉลี่ยต่อเนื่องของค่าที่กำหนด
ในบทช่วยสอนนี้ เราจะเรียนรู้วิธีการใช้งานและใช้ประโยชน์จากผลรวมสะสมใน SQL โดยใช้วิธีการและเทคนิคต่างๆ
ข้อมูลตัวอย่าง
เพื่อให้เข้าใจได้ดีขึ้นว่าเราจะนำไปใช้และใช้ผลรวมสะสมได้อย่างไร ให้เราเริ่มต้นด้วยการตั้งค่าตารางพื้นฐานด้วยข้อมูลตัวอย่าง สิ่งนี้ช่วยให้เราสามารถสาธิตการทำงานของวิธีการทั้งหมดได้อย่างรวดเร็วและมีประสิทธิภาพในโพสต์นี้
เริ่มต้นด้วยการสร้างตารางพื้นฐานที่เก็บข้อมูลผลิตภัณฑ์
สร้างผลิตภัณฑ์ตาราง (
product_id INT คีย์หลัก,
product_name วาร์ชาร์ ( 255 ) ,
ราคาทศนิยม ( 10 , 2 )
) ;
สิ่งนี้ควรสร้างตารางใหม่ที่เรียกว่า 'ผลิตภัณฑ์' ที่เก็บรหัสผลิตภัณฑ์ ชื่อผลิตภัณฑ์ และราคาของผลิตภัณฑ์แต่ละรายการ
จากนั้นเราสามารถดำเนินการเพิ่มข้อมูลตัวอย่างตามที่แสดงในตัวอย่างคำสั่งแทรกต่อไปนี้:
ใส่ลงในผลิตภัณฑ์ ( product_id, product_name, ราคา )
ค่านิยม
( 1 , 'รหัส Visual Studio' , 10.00 น ) ,
( 2 , 'ข้อความประเสริฐ' , 80.00 น ) ,
( 3 , 'PyCharm มืออาชีพ' , 199.00 ) ,
( 4 , 'คราส IDE' , 30.00 น ) ,
( 5 , 'IntelliJ IDEA สุดยอด' , 699.00 ) ,
( 6 , 'GitHub เดสก์ท็อป' , 20.00 น ) ,
( 7 , 'รอซอฟต์แวร์' , 10.00 น ) ,
( 8 , 'เอ็กซ์โค้ด' , 660.00 ) ,
( 9 , 'เน็ตบีนส์' , 0.00 ) ,
( 10 , 'อะตอม' , 60.00 น ) ;
หมายเหตุ: ข้อมูลที่ระบุเป็นเพียงเรื่องสมมติเท่านั้น ไม่ได้แสดงถึงราคาที่แท้จริงของรายการใด ๆ ที่ระบุไว้
ตารางผลลัพธ์จะเป็นดังนี้:
ผลรวมสะสม SQL (เข้าร่วมด้วยตนเอง)
หนึ่งในเทคนิคที่เราสามารถใช้เพื่อหาผลรวมสะสมในคอลัมน์ที่กำหนดคือการใช้วิธีการรวมตัวเอง ข้อดีอย่างหนึ่งของวิธีนี้คือใช้งานได้กับฐานข้อมูล SQL เกือบทั้งหมด แม้แต่ฐานข้อมูลที่ไม่รองรับฟังก์ชัน Window ก็ตาม
ยกตัวอย่างตาราง 'ผลิตภัณฑ์' ก่อนหน้านี้ เราสามารถสร้างผลรวมสะสมของคอลัมน์ราคาดังแสดงในแบบสอบถามต่อไปนี้:
เลือกp1.product_id,
p1.product_name,
p1.ราคา
ผลรวม ( p2.ราคา ) AS cumulative_sum
จาก
สินค้าหน้า1
เข้าร่วม
สินค้า p2
บน
p1.product_id > = p2.product_id
จัดกลุ่มตาม
p1.product_id,
p1.product_name,
p1.ราคา
สั่งโดย
p1.product_id;
คุณสังเกตเห็นการทำงานของแบบสอบถามหรือไม่? ถ้าไม่ติดกับเราในขณะที่เราอธิบายทีละขั้นตอน
ในแบบสอบถามตัวอย่างที่กำหนด เราเริ่มต้นด้วยการสร้างนามแฝงสองรายการ – “p1” และ “p2” – สำหรับตาราง “ผลิตภัณฑ์” ซึ่งช่วยให้เราสามารถดำเนินการรวมด้วยตนเองได้
จากนั้นเราจะดำเนินการรวม 'p1' และ 'p2' โดยมีเงื่อนไขว่า 'product_id' ของ 'p1' มากกว่าหรือเท่ากับ 'product_id' ของ 'p2'
ในขั้นตอนถัดไป เราเรียกฟังก์ชัน sum() ซึ่งโดยทั่วไปจะคำนวณผลรวมสะสมของราคาสำหรับแต่ละแถว
สุดท้าย เราจัดกลุ่มผลลัพธ์โดยใช้ 'product_id', 'product_name' และ 'price' และเรียงลำดับผลลัพธ์
หลังจากการดำเนินการนี้ เราควรมีผลรวมสะสมสำหรับแต่ละเรกคอร์ดดังแสดงในตารางผลลัพธ์ดังแสดงต่อไปนี้:
อย่างที่คุณเห็น เราได้ผลรวมของแถวก่อนหน้าทั้งหมด แถวสุดท้ายควรมีผลรวมของแถวก่อนหน้าทั้งหมด
ผลรวมสะสม SQL (ฟังก์ชันหน้าต่าง)
วิธีคำนวณผลรวมสะสมใน SQL ที่มีประสิทธิภาพและใช้งานได้จริงมากขึ้นคือการใช้ประโยชน์จากฟังก์ชันหน้าต่างทุกครั้งที่ได้รับการสนับสนุน
หากคุณมีฐานข้อมูล เช่น SQL Server, PostgreSQL หรือ MySQL เวอร์ชัน 8.0 ขึ้นไป นี่เป็นวิธีที่มีประโยชน์และแนะนำมากที่สุดในการพิจารณาผลรวมสะสมของคอลัมน์ที่กำหนด
ดูตัวอย่างตามที่แสดงต่อไปนี้:
เลือกรหัสผลิตภัณฑ์,
ชื่อผลิตภัณฑ์,
ราคา,
ผลรวม ( ราคา ) เกิน ( สั่งซื้อตาม product_id ) AS cumulative_sum
จาก
สินค้า;
ในกรณีนี้ เราเริ่มต้นด้วยการเลือกคอลัมน์ 'product_id', 'product_name' และ 'price' จากตาราง 'products'
จากนั้นเราใช้ฟังก์ชัน SUM() เป็นฟังก์ชันหน้าต่างโดยใช้ส่วนคำสั่ง OVER
ในส่วนคำสั่ง OVER เราระบุส่วนคำสั่ง ORDER BY ซึ่งกำหนดลำดับในการคำนวณผลรวมสะสม
สิ่งนี้ควรส่งคืนผลลัพธ์ที่คล้ายกันดังแสดงต่อไปนี้:
คุณจะสังเกตเห็นว่าการใช้ฟังก์ชันหน้าต่างมีความสอดคล้อง มีประสิทธิภาพ และอ่านง่ายกว่าเมื่อเทียบกับการใช้การรวมตัวเอง
บทสรุป
ในบทช่วยสอนนี้ เราได้เรียนรู้ทั้งหมดเกี่ยวกับผลรวมสะสมใน SQL นอกจากนี้เรายังกล่าวถึงวิธีการใช้ฟังก์ชันการรวมตัวเองและหน้าต่างเพื่อดำเนินการผลรวมสะสมใน SQL