Saltar al contenido

¿Cómo incluir resultados “cero” / “0” en COUNT agregado?

Puede que se de el caso de que encuentres algún problema en tu código o proyecto, recuerda probar siempre en un entorno de testing antes aplicar el código al proyecto final.

Solución:

Desea una combinación externa para esto (y necesita usar person como la tabla “conductora”)

SELECT person.person_id, COUNT(appointment.person_id) AS "number_of_appointments"
FROM person 
  LEFT JOIN appointment ON person.person_id = appointment.person_id
GROUP BY person.person_id;

La razón por la que esto funciona es que la combinación externa (izquierda) volverá NULL para aquellas personas que no tengan cita. La función agregada count() no contará NULL valores y por lo tanto obtendrá un cero.

Si desea obtener más información sobre las uniones externas, aquí hay un buen tutorial: http://sqlzoo.net/wiki/Using_Null

Debes usar LEFT JOIN en vez de INNER JOIN

SELECT person.person_id, COUNT(appointment.person_id) AS "number_of_appointments"
FROM person 
LEFT JOIN appointment ON person.person_id = appointment.person_id
GROUP BY person.person_id;

si realiza la unión externa (con el conteo) y luego usa este resultado como una subtabla, puede obtener 0 como se esperaba (gracias a la función nvl)

Ex:

select P.person_id, nvl(A.nb_apptmts, 0) from 
(SELECT person.person_id
FROM person) P
LEFT JOIN 
(select person_id, count(*) as nb_apptmts
from appointment 
group by person_id) A
ON P.person_id = A.person_id

Te mostramos las comentarios y valoraciones de los usuarios

Si piensas que ha sido provechoso nuestro artículo, te agradeceríamos que lo compartas con otros entusiastas de la programación así contrubuyes a extender nuestra información.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *