Sum() เป็นฟังก์ชันรวมใน MySQL คุณสามารถใช้คิวรีผลรวมกับเงื่อนไข if เพื่อให้เข้าใจผลรวมของแบบสอบถามที่มีเงื่อนไข if ให้เราสร้างตาราง
แบบสอบถามเพื่อสร้างตาราง −
mysql> สร้างตาราง SumWithIfCondition −> ( −> ModeOfPayment varchar(100) −> , −> Amount int −> );Query OK, 0 แถวได้รับผลกระทบ (1.60 วินาที)
แทรกบางระเบียนในตารางโดยใช้คำสั่งแทรก แบบสอบถามมีดังนี้ −
mysql> แทรกลงในค่า SumWithIfCondition ('ออฟไลน์',10); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.21 วินาที) mysql> แทรกลงในค่า SumWithIfCondition ('ออนไลน์', 100); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.16 วินาที )mysql> แทรกลงในค่า SumWithIfCondition ('ออฟไลน์', 20); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.13 วินาที) mysql> แทรกลงในค่า SumWithIfCondition ('ออนไลน์', 200); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.16 วินาที) mysql> แทรกลงในค่า SumWithIfCondition ('ออฟไลน์', 30); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.11 วินาที) mysql> แทรกลงในค่า SumWithIfCondition ('ออนไลน์', 300); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.17 วินาที)
แสดงระเบียนทั้งหมดจากตารางโดยใช้คำสั่ง select แบบสอบถามมีดังนี้ −
mysql> เลือก *จาก SumWithIfCondition;
ต่อไปนี้เป็นผลลัพธ์ -
<ก่อนหน้า>+--------------+-------+| โหมดการชำระเงิน | จำนวน |+--------------+-------+| ออฟไลน์ | 10 || ออนไลน์ | 100 || ออฟไลน์ | 20 || ออนไลน์ | 200 || ออฟไลน์ | 30 || ออนไลน์ | 300 |+-----------------------+-------+6 แถวในชุด (0.00 วินาที)นี่คือขั้นตอนการจัดเก็บที่ใช้หนึ่งสตริงเป็นพารามิเตอร์ -
mysql> ตัวคั่น //mysql> สร้างขั้นตอน sp_GetSumWithPaymentMode11(PaymentMode varchar(200))−> start−> เลือก PaymentMode,sum(if(ModeOfPayment=PaymentMode,Amount,0)) เป็น TotalAmount จาก SumWithIfCondition;−> สิ้นสุด / /แบบสอบถามตกลง 0 แถวได้รับผลกระทบ (0.32 วินาที)mysql> ตัวคั่น;
ตอนนี้คุณสามารถเรียกกระบวนงานที่เก็บไว้โดยใช้คำสั่งโทร
กรณีที่ 1 - สำหรับออนไลน์
แบบสอบถามมีดังนี้ −
mysql> โทร sp_GetSumWithPaymentMode11('Online');
ต่อไปนี้เป็นผลลัพธ์ -
<ก่อนหน้า>+-------------+-------------+| โหมดการชำระเงิน | ยอดรวม |+-------------+-------------+| ออนไลน์ | 600 |+-------------+-------------+1 แถวในชุด (0.00 วินาที) แบบสอบถามตกลง 0 แถวได้รับผลกระทบ (0.01 วินาที)กรณีที่ 2 - สำหรับออฟไลน์
แบบสอบถามมีดังนี้ −
mysql> โทร sp_GetSumWithPaymentMode11('ออฟไลน์');
ต่อไปนี้เป็นผลลัพธ์ -
<ก่อนหน้า>+-------------+-------------+| โหมดการชำระเงิน | ยอดรวม |+-------------+-------------+| ออฟไลน์ | 60 |+-------------+-------------+1 แถวในชุด (0.00 วินาที) แบบสอบถามตกลง 0 แถวได้รับผลกระทบ (0.01 วินาที)