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( condicin,  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鷑 comentario todav韆


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