Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

จะสร้างคอลัมน์ผลรวมสะสมใน MySQL ได้อย่างไร


ในการสร้างคอลัมน์ผลรวมสะสมใน MySQL คุณต้องสร้างตัวแปรและตั้งค่าเป็น 0 ผลรวมสะสมจะเพิ่มค่าถัดไปทีละขั้นด้วยค่าปัจจุบัน

ประการแรก คุณต้องสร้างตัวแปรด้วยความช่วยเหลือของ SET ไวยากรณ์มีดังนี้ −

set @anyVariableName:=0;

ไวยากรณ์ในการสร้างคอลัมน์ผลรวมสะสมใน MySQL มีดังนี้ -

select yourColumnName1,yourColumnName2,........N,(@anyVariableName :=@anyVariableName + yourColumnName2) เป็น anyVariableName จากลำดับ yourTableName โดย yourColumnName1;

เพื่อให้เข้าใจแนวคิดข้างต้น ให้เราสร้างตาราง ต่อไปนี้เป็นแบบสอบถามเพื่อสร้างตาราง −

mysql> สร้างตาราง CumulativeSumDemo −> ( −> BookId int, −> BookPrice int −> ); ตกลง ตกลง 0 แถวได้รับผลกระทบ (0.67 วินาที)

แทรกบางระเบียนในตารางโดยใช้คำสั่ง select แบบสอบถามเพื่อแทรกบันทึกมีดังนี้ -

mysql> แทรกลงในค่า CumulativeSumDemo (101,400) แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.15 วินาที) mysql> แทรกลงในค่า CumulativeSumDemo (102,500) แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.16 วินาที) mysql> แทรกลงในค่า CumulativeSumDemo ( 103,600); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.16 วินาที) mysql> แทรกลงในค่า CumulativeSumDemo (104,1000); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.18 วินาที)

แสดงระเบียนทั้งหมดที่ฉันแทรกโดยใช้คำสั่ง insert แบบสอบถามมีดังนี้ −

mysql> เลือก *จาก CumulativeSumDemo;

ต่อไปนี้เป็นผลลัพธ์ -

<ก่อนหน้า>+---------+-----------+| รหัสหนังสือ | ราคาหนังสือ |+-------+-----------+| 101 | 400 || 102 | 500 || 103 | 600 || 104 | 1,000 |+-------+-----------+4 แถวในชุด (0.00 วินาที)

หากต้องการเพิ่มคอลัมน์ผลรวมสะสม ก่อนอื่นคุณต้องสร้างตัวแปร แบบสอบถามมีดังนี้ −

mysql> set @CumulativeSum :=0;Query OK, 0 แถวได้รับผลกระทบ (0.00 วินาที)

ใช้ไวยากรณ์ข้างต้นที่กล่าวถึงในตอนต้นเพื่อเพิ่มคอลัมน์ผลรวมสะสม แบบสอบถามมีดังนี้ −

mysql> เลือก BookId,BookPrice,(@CumulativeSum :=@CumulativeSum + BookPrice) เป็น CumSum −> จากคำสั่ง CumulativeSumDemo ตาม BookId;

ต่อไปนี้เป็นผลลัพธ์ ที่นี่ยังมองเห็นคอลัมน์ผลรวมสะสม -

<ก่อนหน้า>+---------+-----------+-------+| รหัสหนังสือ | ราคาหนังสือ | CumSum |+---------+-----------+-------+| 101 | 400 | 400 || 102 | 500 | 900 || 103 | 600 | 1500 || 104 | 1000 | 2500 |+-------+-----------+-------+4 แถวในชุด (0.00 วินาที)