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

นับค่าฟิลด์บูลีนภายในแบบสอบถาม MySQL เดียวหรือไม่


ในการนับค่าฟิลด์บูลีนภายในคิวรีเดียว คุณสามารถใช้คำสั่ง CASE ให้เราสร้างตารางสาธิตสำหรับตัวอย่างของเรา -

mysql> สร้างตาราง countBooleanFieldDemo -> ( -> StudentId int ไม่ใช่ NULL AUTO_INCREMENT PRIMARY KEY, -> StudentFirstName varchar(20), -> isPassed tinyint(1) -> ); แบบสอบถามตกลง 0 แถวได้รับผลกระทบ (0.63 วินาที) 

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

แบบสอบถามมีดังนี้ −

mysql> แทรกลงในค่า countBooleanFieldDemo (StudentFirstName,isPassed) ('Larry',0); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.12 วินาที) mysql> แทรกลงในค่า countBooleanFieldDemo (StudentFirstName,isPassed) ('Mike',1);แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.17 วินาที)mysql> แทรกลงในค่า countBooleanFieldDemo (StudentFirstName,isPassed) ('Sam',0); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.21 วินาที) mysql> แทรกลงใน countBooleanFieldDemo (StudentFirstName, isPassed) ค่า ('Carol',1); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.15 วินาที) mysql> แทรกลงใน countBooleanFieldDemo (StudentFirstName,isPassed) ค่า ('Bob',1); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.16 วินาที) mysql> แทรกในค่า countBooleanFieldDemo(StudentFirstName,isPassed) ('David',1); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.13 วินาที) mysql> แทรกลงในค่า countBooleanFieldDemo (StudentFirstName,isPassed) ('Ramit',0); แบบสอบถามตกลง 1 แถวที่ได้รับผลกระทบ (0.28 วินาที) mysql> แทรกลงในค่า countBooleanFieldDemo (StudentFirstName, isPassed) ('Chris', 1); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.20 วินาที) mysql> แทรกลงใน countBooleanF ieldDemo(StudentFirstName,isPassed) values('Robert',1);แบบสอบถามตกลง ได้รับผลกระทบ 1 แถว (0.16 วินาที)

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

แบบสอบถามมีดังนี้ −

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

นี่คือผลลัพธ์ -

<ก่อนหน้า>+--------------------------------------+----------+| รหัสนักศึกษา | StudentFirstName | isPassed |+-----------------------------------------------------+----------+| 1 | แลร์รี่ | 0 || 2 | ไมค์ | 1 || 3 | แซม | 0 || 4 | แครอล | 1 || 5 | บ๊อบ | 1 || 6 | เดวิด | 1 || 7 | รมิท | 0 || 8 | คริส | 1 || 9 | โรเบิร์ต | 1 |+-----------+--------------------------+----------+9 แถวในชุด ( 0.00 วินาที)

นี่คือแบบสอบถามเพื่อนับค่าฟิลด์บูลีนภายในแบบสอบถามเดียว -

mysql> เลือก sum(isPassed=1) เป็น `True`, sum(isPassed =0) เป็น `False`, -> ( -> case เมื่อ sum(isPassed =1)> 0 แล้ว sum(isPassed =0) / sum(isPassed =1) -> end -> )เป็น TotalPercentage -> จาก countBooleanFieldDemo;

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

<ก่อนหน้า>+------+---------+----------------+| ทรู | เท็จ | TotalPercentage |+------+ --------+----------------+| 6 | 3 | 0.5000 |+------+-------+-----------------+1 แถวในชุด (0.00 วินาที)