Ver Mensaje Individual
  #19 (permalink)  
Antiguo 16/05/2013, 08:43
leonardo_josue
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 4 meses
Puntos: 447
Respuesta: contar y filtrar en consulta my sql

Hola de nuevo alvar0o0:

Tal como lo menciona Libras, el detalle al poner un SUM(1) es que te contabiliza todos los registros, no solo los que contengan 'bajo', 'medio' o 'alto'... si tuvieras cualquier otro valor, incluyendo valores nulos se seguirían contabilizando... aquí hay de dos sopas, o mediante programación te aseguras que estos tres valores son los únicos que pueda tener tu campo (por ejemplo con una enumeración) o en su defecto modificas el sum(1) por algo como esto:

Código MySQL:
Ver original
  1. SELECT e.nombre,
  2.   SUM(CASE WHEN potencial = 'bajo' THEN 1 ELSE 0 END) bajo,
  3.   SUM(CASE WHEN potencial = 'medio' THEN 1 ELSE 0 END) medio,  
  4.   SUM(CASE WHEN potencial = 'alto' THEN 1 ELSE 0 END) alto,
  5.   SUM(CASE WHEN potencial IN ('bajo', 'medio', 'alto') THEN 1 ELSE 0 END) total
  6. FROM accidentecontratista ac JOIN empresa e ON e.rut=ac.rutempresa
  7. WHERE e.nombre = '" & cmbEmpresaI.Text & "'
  8. GROUP BY e.nombre

Esta consulta te contabilizará sólo los registros que tienen estos tres valores, pero te expones a que no te presente todos los registros... otra opción sería hacer algo como esto:


Código MySQL:
Ver original
  1. SELECT e.nombre,
  2. SUM(CASE WHEN potencial = 'bajo' THEN 1 ELSE 0 END) bajo,
  3. SUM(CASE WHEN potencial = 'medio' THEN 1 ELSE 0 END) medio,  
  4. SUM(CASE WHEN potencial = 'alto' THEN 1 ELSE 0 END) alto,
  5. SUM(CASE WHEN potencial NOT IN ('bajo', 'medio', 'alto') THEN 1 ELSE 0 END) otro,
  6. SUM(1) total
  7. FROM accidentecontratista ac JOIN empresa e ON e.rut=ac.rutempresa
  8. WHERE e.nombre = '" & cmbEmpresaI.Text & "'
  9. GROUP BY e.nombre

Es decir, la categoría OTRO contabilizaría todos los casos distintos a los tres que estás analizando, el SUM(1) te seguiría contabilizando todos los registros...

Saludos
Leo.