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

เราสามารถแยกรายการที่มี “0” ในขณะที่ใช้ฟังก์ชัน MySQL AVG ได้หรือไม่


หากต้องการยกเว้นรายการที่มี “0” คุณต้องใช้ NULLIF() พร้อมฟังก์ชัน AVG()

ไวยากรณ์มีดังนี้

เลือก AVG(NULLIF(yourColumnName, 0)) AS anyAliasName จาก yourTableName

เรามาสร้างตารางกันก่อน

mysql> สร้างตาราง AverageDemo -> ( -> Id int ไม่ใช่ NULL AUTO_INCREMENT PRIMARY KEY, -> StudentName varchar(20), -> StudentMarks int -> );Query OK, 0 แถวได้รับผลกระทบ (0.72 วินาที)

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

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

mysql> แทรกลงในค่า AverageDemo (StudentName,StudentMarks) ('Adam', NULL); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.12 วินาที) mysql> แทรกลงในค่า AverageDemo (StudentName, StudentMarks) ('Larry', 23);แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.19 วินาที)mysql> แทรกลงใน AverageDemo(StudentName,StudentMarks) ค่า('Mike',0);แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.20 วินาที)mysql> แทรกลงใน AverageDemo(StudentName,StudentMarks) values('Sam',45);Query OK, 1 แถวได้รับผลกระทบ (0.18 วินาที)mysql> แทรกลงใน AverageDemo(StudentName,StudentMarks) values('Bob',0);Query OK, 1 แถวได้รับผลกระทบ (0.12 วินาที)mysql> แทรกลงในค่า AverageDemo(StudentName,StudentMarks) ('David',32);สืบค้นตกลง ได้รับผลกระทบ 1 แถว (0.18 วินาที)

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

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

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

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

<ก่อนหน้า>+----+-------------+--------------+| รหัส | ชื่อนักเรียน | StudentMarks |+----+-------------+-------------+| 1 | อดัม | NULL || 2 | แลร์รี่ | 23 || 3 | ไมค์ | 0 || 4 | แซม | 45 || 5 | บ๊อบ | 0 || 6 | เดวิด | 32 |+----+-------------+--------------+6 แถวในชุด (0.00 วินาที)

ต่อไปนี้เป็นแบบสอบถามเพื่อแยกรายการที่มี “0” ในขณะที่ใช้ AVG

mysql> เลือก AVG(nullif(StudentMarks, 0)) AS Exclude0Avg จาก AverageDemo;

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

<ก่อนหน้า>+-------------+| Exclude0Avg |+-------------+| 33.3333 |+-------------+1 แถวในชุด (0.05 วินาที)