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

แบบสอบถาม MySQL เพื่อเลือกการนับสองเงื่อนไขแยกกัน?


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

mysql> สร้างตาราง DemoTable -> ( -> StudentMarks int, -> isValid tinyint(1) -> );ตกลง ตกลง 0 แถวได้รับผลกระทบ (0.68 วินาที)

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

mysql> แทรกลงในค่า DemoTable (45,0); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.15 วินาที) mysql> แทรกลงในค่า DemoTable (78,1); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.26 วินาที) mysql> แทรก ลงในค่า DemoTable (45,1); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.31 วินาที) mysql> แทรกลงในค่า DemoTable (78,1); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.22 วินาที) mysql> แทรกลงในค่า DemoTable (45, 0); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.17 วินาที) mysql> แทรกลงในค่า DemoTable (82,1); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.12 วินาที) mysql> แทรกลงในค่า DemoTable (62,1); แบบสอบถามตกลง ได้รับผลกระทบ 1 แถว (0.14 วินาที)

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

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

ผลลัพธ์

<ก่อนหน้า>+-------------+---------+| StudentMarks | isValid |+-------------+---------+| 45 | 0 || 78 | 1 || 45 | 1 || 78 | 1 || 45 | 0 || 82 | 1 || 62 | 1 |+--------------+---------+7 แถวในชุด (0.00 วินาที)

นี่คือแบบสอบถามเพื่อเลือกการนับในสองเงื่อนไขแยกกัน -

mysql> เลือก StudentMarks, -> sum(case -> when StudentMarks=45 -> then case when isValid =1 then 1 else 0 end -> else 1 end -> ) AS Freq -> from DemoTable -> group by StudentMarks;

ผลลัพธ์

<ก่อนหน้า>+-------------+------+| StudentMarks | ความถี่ |+-------------+------+| 45 | 1 || 78 | 2 || 82 | 1 || 62 | 1 |+-------------+------+4 แถวในชุด (0.00 วินาที)