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

ดำเนินการนับด้วยคำสั่ง CASE WHEN ใน MySQL หรือไม่


สำหรับสิ่งนี้ คุณสามารถใช้คำสั่ง CASE WHEN ให้เราสร้างตารางก่อน -

mysql> สร้างตาราง DemoTable1910 ( FirstName varchar(20), Marks int );Query OK, 0 แถวได้รับผลกระทบ (0.00 วินาที)

แทรกระเบียนบางส่วนในตารางโดยใช้คำสั่ง insert -

mysql> แทรกลงในค่า DemoTable1910 ('Chris',45) แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.00 วินาที)mysql> แทรกลงในค่า DemoTable1910 ('David',85); แบบสอบถามตกลง ได้รับผลกระทบ 1 แถว (0.00 วินาที) )mysql> แทรกลงในค่า DemoTable1910 ('Chris',55); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.00 วินาที) mysql> แทรกลงในค่า DemoTable1910 ('Chris', 98); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.00 วินาที) mysql> แทรกลงในค่า DemoTable1910 ('David',98); แบบสอบถามตกลง ได้รับผลกระทบ 1 แถว (0.00 วินาที)

แสดงระเบียนทั้งหมดจากตารางโดยใช้คำสั่ง select -

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

สิ่งนี้จะสร้างผลลัพธ์ต่อไปนี้ -

<ก่อนหน้า>+-----------+-------+| ชื่อจริง | เครื่องหมาย |+-----------+-------+| คริส | 45 || เดวิด | 85 || คริส | 55 || คริส | 98 || เดวิด | 98 |+-----------+-------+5 แถวในชุด (0.00 วินาที)

นี่คือแบบสอบถามเพื่อนับค่าคอลัมน์อย่างมีประสิทธิภาพ -

mysql> เลือก FirstName, sum(case when Marks=45 then 1 else 0 end), sum(case when Marks=98 then 1 else 0 end) จากกลุ่ม DemoTable1910 ตาม FirstName;

สิ่งนี้จะสร้างผลลัพธ์ต่อไปนี้ -

<ก่อนหน้า>+------------------------------------------------------------- ----------------------------------------------------------- ----+| ชื่อจริง | sum(กรณีที่ Marks=45 แล้ว 1 else 0 end) | sum(กรณีที่ Marks=98 แล้ว 1 else 0 end) |+-----------+---------------------- --------------------------------------------------------------- --------------+| คริส | 1 | 1 || เดวิด | 0 | 1 |+------------------------------------------------------------- ----------------------------------------------------------- --+2 แถวในชุด (0.00 วินาที)