ElTicus.com

Programación, lenguajes y recursos para programadores

**
Truco
Conteo Condicionado en Mysql
Explicación y ejemplos
Publicado por jl Fecha: 2012-11-08 20:30:30 Idioma: Español Tipo de documento: Truco

Consulta de MySQL para hacer un Conteo Condicionado

Para que sirve: En ocasiones necesitamos saber cuantos registros de una tabla cumplen con una condición determinada. En esos casos lo más simple es utilizar el comando WHERE [condición] el cual nos permite filtrar y contar los resultados. No obstante, el comando WHERE tiene una limitante que consiste en que solamente podemos recibir un solo resultado, pero, ¿que pasa si nosotros necesitamos contar más de un elemento y con condiciones diferentes?
Para estos casos, contamos con la función de asignación condicional: IF()

Sintaxis:

 if( condición,  valor-cuando-verdadero, valor-cuando-falso );

La forma más sencilla de entender el uso de esta función es a base de ejemplos:

Ejemplo 1: El más simple…

SELECT if( calificacion > 5,  'aprobado', 'reprobado' );

Si el valor del campo calificacion es mayor de 5 nos devolverá la cadena 'aprobado' de lo contrario devolverá la cadena 'reprobado'.

Ejemplo 2: Supongamos que tenemos una tabla llamada 'alumnos' y queremos saber de esta tabla la cantidad de hombres, mujeres y cuantos no contestaron la pregunta. La sentencia que nos devolvería esto es:

SELECT  sum(  if( sexo='H',  1, 0 ) ) as hombres, 
        sum(  if( sexo='M',  1, 0 ) ) as mujeres, 
        sum(  if( sexo is null,  1, 0 ) ) as NC 
FROM alumnos;

Si el valor del campo sexo es igual a la letra H, entonces en ese renglón le sumamos 1 al campo hombres, de lo contrario sumamos 0.
De igual manera comparamos si contiene una letra M para sumarlo al contador de mujeres. Y si es NULO lo sumamos a los que No-Contestaron (NC).

Ejemplo 3: El ejemplo anterior podemos complicarlo un poco más solicitando que en esa misma sentencia nos devuelva las mismas sumas pero por grupo.
Es decir, que nos diga cuantos hombres, mujeres y NC hay en el grupo 'A' cuantos en el 'B' y así sucesivamente.

SELECT  grupo,
        sum(  if( sexo=âHâ,  1, 0 ) ) as hombres, 
        sum(  if( sexo=âMâ,  1, 0 ) ) as mujeres, 
        sum(  if( sexo is null,  1, 0 ) ) as NC 
FROM alumnos
GROUP BY grupo;

Sorprendentemente veremos que resulta sumamente simple. Nada más agregamos el campo 'grupo' y solicitamos que nos agrupe por ese campo y el resultado llegará tal como lo buscamos.




Nadie ha puesto ningún comentario todavía


Haz un comentario sobre este tema
Nombre email (no se muestra)
comentario:
Escribe las 2 letras que ves aquí: Imagen anti-spam =




No hay comentarios