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

จะนับจำนวนนักเรียนปัจจุบันและขาดเรียนใน MySQL เป็นเวลาหนึ่งปีได้อย่างไร


สำหรับสิ่งนี้ คุณสามารถใช้ IF() ร่วมกับฟังก์ชันรวม SUM() ให้เราสร้างตารางก่อน -

mysql> สร้างตาราง DemoTable1617 -> ( -> varchar(20), -> CurrentYear int -> ); ตกลง ตกลง 0 แถวได้รับผลกระทบ (0.48 วินาที)

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

mysql> แทรกลงในค่า DemoTable1617 ('Present',2019) แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.15 วินาที)mysql> แทรกลงในค่า DemoTable1617 ('ไม่มี', 2019); แบบสอบถามตกลง ได้รับผลกระทบ 1 แถว (0.20 วินาที )mysql> แทรกลงในค่า DemoTable1617 ('Absent',2017); Query OK, 1 แถวได้รับผลกระทบ (0.13 วินาที)mysql> แทรกลงในค่า DemoTable1617 ('Present',2019); Query OK, 1 แถวได้รับผลกระทบ (0.15 วินาที) mysql> แทรกลงในค่า DemoTable1617 ('ปัจจุบัน', 2018); แบบสอบถามตกลง ได้รับผลกระทบ 1 แถว (0.10 วินาที) mysql> แทรกลงในค่า DemoTable1617 ('ปัจจุบัน', 2019); แบบสอบถามตกลง ได้รับผลกระทบ 1 แถว (0.14 วินาที)

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

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

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

<ก่อนหน้า>+-----------+-------------+| ผู้เข้าร่วม | ปีปัจจุบัน |+------------+-------------+| ปัจจุบัน | 2019 || ไม่อยู่ | 2019 || ไม่อยู่ | 2017 || ปัจจุบัน | 2019 || ปัจจุบัน | 2018 || ปัจจุบัน | 2019 |+-----------+-------------+6 แถวในชุด (0.00 วินาที)

ต่อไปนี้คือคำถามเพื่อนับจำนวนนักเรียนที่ปัจจุบันและขาดเรียนเป็นเวลาหนึ่งปี

mysql> เลือก sum(if(Attendance='Present',1,0)) เป็น Present , -> sum(if(Attendance='Absent',1,0)) as Absent -> จาก DemoTable1617 -> where ปัจจุบันปีเช่น '2019%';

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

<ก่อนหน้า>+---------+---------+| ปัจจุบัน | ไม่มี |+---------+-------+| 3 | 1 |+---------+---------+1 แถวในชุด (0.00 วินาที)