ผลรวมสะสมของ SQL

Phl Rwm Sasm Khxng Sql



ใน 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