Mysql
 sql >> база данни >  >> RDS >> Mysql

MySQL:усредняване с нулеви стойности

Обобщените функции (SUM, AVG, COUNT и т.н.) в SQL винаги изключват NULL.

Така че SUM(col) / COUNT(col) =AVG(col) - това е страхотно и последователно.

Специалният случай на COUNT(*) отчита всеки ред.

Ако съставите израз с NULL:A + B, където A или B е NULL, тогава A + B ще бъде NULL, независимо дали другата колона е NULL.

Когато има NULL, като цяло, AVG(A + B) <> AVG(A) + AVG(B), и те вероятно също ще имат различни знаменатели. Ще трябва да увиете колоните:AVG(COALESCE(A, 0) + COALESCE(B, 0)), за да решите това, но може би също така да изключите случая, когато COALESCE(A, 0) + COALESCE(B, 0).

Въз основа на вашия код бих предложил:

select avg(coalesce(col1, 0) + coalesce(col2, 0)), count(col3) from table1
where coalesce(col1, col2) is not null -- double nulls are eliminated
group by SomeArbitraryCol
having avg(coalesce(col1, 0) + coalesce(col2, 0)) < 500 and count(col3) > 3
order by avg(coalesce(col1, 0) + coalesce(col2, 0)) asc;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да промените външния ключ на MySQL таблица с помощта на командния ред

  2. защо mysql променя моя кодов изглед?

  3. Mysql WHERE проблем със списък, разделен със запетая

  4. качен csv не работи

  5. Как да архивирате вашата база данни Chamilo LMS MySQL