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

แบบสอบถามรวม MySQL พร้อมเงื่อนไข IF โดยใช้กระบวนงานที่เก็บไว้


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 วินาที)