In Tutoriales y tips Written by

Conteo condicional en PostgreSQL

Conteo condicional en PosgreSQL (posgres). Un ejemplo de como utilizar count con una condición.

Por lo general utilizamos count para contar registros de una consulta. Pero también podemos usarlos discriminando cuando contar y cuando no. El ejemplo es para Postgres pero se puede hacer de forma similar en mysql.

Esto es particularmente útil en consultas con GROUP BY donde se quieren conteos de diferentes categorías.
Un ejemplo sencillo sería: Supongamos que tenemos una tabla «MOVIMIENTOS» y queremos saber en una sola consulta cuantos movimientos fueron y cuantos fueron por el concepto igual a «DEPOSITO» usando la función COUNT:

SELECT numero_cuenta, count(*) AS "numero_movimientos", count(concepto_movimiento = 'DEPOSITO') as "numero_depositos"
FROM "MOVIMIENTOS"
GROUP BY numero_cuenta

Otro ejemplo sería:

SELECT cod_cam, nom_fue, nom_cam, pre_cam, count(cod_con) AS "contactos", count(cod_est_con='M' OR NULL) AS "matriculados"
FROM "CONTACTO" INNER JOIN "CAM"
ON "CONTACTO".cod_cam_con="CAM".cod_cam
LEFT JOIN "FUENTE"
ON "CAM".cod_fue_cam="FUENTE".cod_fue
GROUP BY cod_cam, nom_fue, nom_cam, pre_cam

Nótese que la consulta me permite tener un conteo total de todos los registros en la columna «contactos» pero ademas en la columna «matriculados» me permite simultáneamente saber cuantos de ellos cumplen la condición: tienen el campo cod_est_con con un valor igual a ‘M’. Si la condición es verdadera sumará 1 al conteo y si es falsa sumará NULL; es decir no sumará al conteo.

Otra forma de hacerlo sería con subcosultas pero esta forma sería más práctica y liviana.

Comentarios
(Visited 460 times, 1 visits today)

Last modified: 15 septiembre, 2017

Close