Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Conocer totales bajo ciertas condiciones

Estas en el tema de Conocer totales bajo ciertas condiciones en el foro de Mysql en Foros del Web. Buenos días; obtengo el resultado de una consulta esta informacion: Quisiera saber por programa cuantos SI vinieron y Cuantos NO y que valor suma los ...
  #1 (permalink)  
Antiguo 01/04/2016, 07:39
Avatar de mager3  
Fecha de Ingreso: junio-2012
Ubicación: Medellin
Mensajes: 318
Antigüedad: 11 años, 10 meses
Puntos: 4
Información Conocer totales bajo ciertas condiciones

Buenos días;

obtengo el resultado de una consulta esta informacion:



Quisiera saber por programa cuantos SI vinieron y Cuantos NO y que valor suma los que si y los que No por programa.


Me pueden dar una manito con la consulta por favor ya que llevo un rato y no me ha dado.
  #2 (permalink)  
Antiguo 01/04/2016, 07:42
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Conocer totales bajo ciertas condiciones

Cita:
Me pueden dar una manito con la consulta por favor ya que llevo un rato y no me ha dado
Hagámoslo simple: Postea lo que intentaste y veamos donde está el fallo.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 01/04/2016, 08:28
Avatar de mager3  
Fecha de Ingreso: junio-2012
Ubicación: Medellin
Mensajes: 318
Antigüedad: 11 años, 10 meses
Puntos: 4
Respuesta: Conocer totales bajo ciertas condiciones

Con el COUNT pretendo que me separe por programa y me de el count y la sum la sumatoria e los valores... aunque no me da y aun mas me enredo con el asistencia, no se si habrá que hacer un SELECT UNION

Código SQL:
Ver original
  1. SELECT a.asistencia,d.descripcion_programa,COUNT(d.descripcion_programa),SUM(d.valor)
  2. FROM tb_detalle_grupos a,tb_grupos b,tb_programas d
  3. WHERE a.tb_id_grupos=b.tb_id_grupos  AND fecha BETWEEN '2016-03-01' AND '2016-03-12' ORDER BY d.descripcion_programa ASC
  #4 (permalink)  
Antiguo 01/04/2016, 09:50
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Conocer totales bajo ciertas condiciones

Estás tratando de sumar conceptos que deben estar agrupados sin agruparlos.
Es tan simple como eso.
Cita:
Quisiera saber por programa cuantos SI vinieron y Cuantos NO y que valor suma los que si y los que No
En esa descripción lo que expresas es que necesitas saber cuántos SI y NO hay por cada programa diferente, y eso sólo ocurre cuando AGRUPAS.
El concepto de agrupación o agregación es de manual. Lo puedes encontrar en cualquier tutorial básico, sin necesidad de recurrir al manual de referencia:
MySQL Con Clase: Agrupar filas
Tema 4. Las consultas de resumen (II)
http://dev.mysql.com/doc/refman/5.7/...modifiers.html

En tu caso es simple:
Código SQL:
Ver original
  1. SELECT pr.descripcion_programa, SUM(IF(dg.asistenciad = 'Si', 1, 0)) Asistencia,
  2. SUM(IF(dg.asistenciad = 'No', 1, 0)) NoAsistencia, SUM(pr.valor) Total
  3. FROM tb_detalle_grupos dg
  4.     INNER JOIN tb_grupos gr ON  gr.tb_id_grupos=bdg.tb_id_grupos
  5.     INNER JOIN tb_programas pr ON dg.programas_id = pr.programas_id
  6. WHERE fecha BETWEEN '2016-03-01' AND '2016-03-12'
  7. GROUP BY pr.descripcion_programa ASC

Hay un par de puntos oscuros en tu post: 1) No se ve como se relaciona la tabla de programas con el resto, así que estoy haciendo una suposición; 2) No queda claro por qué sumas siempre el valor, aun cuando no hubo asistencia. ¿No deberías sumar solo a los asistentes?

Finalmente: No uses JOIN implícito, es ineficiente y puede generar errores de resultados si no se determina la relación. Y NUNCA lo uses sin especificar cuál es la forma en que se relacionan las tablas; te olvidaste de una y eso puede sacar resultados basura.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 01/04/2016, 10:17
Avatar de mager3  
Fecha de Ingreso: junio-2012
Ubicación: Medellin
Mensajes: 318
Antigüedad: 11 años, 10 meses
Puntos: 4
Respuesta: Conocer totales bajo ciertas condiciones

Hey gnzsoloyo; muchas gracias aprendi mas de lo que preguntaba gracias a tus recomendaciones..

Etiquetas: mysql+consulta
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:30.