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

WITH ROLLUP no me suma una columna

Estas en el tema de WITH ROLLUP no me suma una columna en el foro de Mysql en Foros del Web. Hola gente del foro! estoy estrenando el hilo de base de datos . Les cuento, pues me tope con un problemita usando WITH ROLLUP. Les ...
  #1 (permalink)  
Antiguo 18/06/2010, 07:50
Avatar de deniz  
Fecha de Ingreso: junio-2008
Ubicación: Bahía Blanca
Mensajes: 41
Antigüedad: 15 años, 9 meses
Puntos: 0
De acuerdo WITH ROLLUP no me suma una columna

Hola gente del foro! estoy estrenando el hilo de base de datos . Les cuento, pues me tope con un problemita usando WITH ROLLUP. Les muestro la consulta:


Código MySQL:
Ver original
  1.     r.fecha AS fecha,
  2.     r.idUsuario AS idUsuario,
  3.     IF( leads1 IS NULL , 0, leads1 ) AS leads,
  4.     COUNT( DISTINCT r.idRecomendacion ) AS recomendaciones
  5.     RECOMENDACION r
  6.         SELECT
  7.             r.fechaLead,
  8.             SUM( r.lead ) AS leads1
  9.         FROM
  10.             RECOMENDACION r
  11.         GROUP BY
  12.             r.fecha
  13.             ) aux ON ( aux.fechaLead = r.fecha )
  14.     USUARIO u ON ( u.email = r.idUsuario )
  15.     r.fecha


El resultado es ok, pero no me suma la columna "leads", me retona 0. A alguien le ha pasado esto? alguna solucion?

Desde ya muchas gracias!!
  #2 (permalink)  
Antiguo 18/06/2010, 08:28
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, 4 meses
Puntos: 2658
Respuesta: WITH ROLLUP no me suma una columna

Es muy posible que los registros en cuestión realmente tengan sólo NULL.
Además, en el contexto de la consulta, la tabla Usuarios es superflua. No agrega nada porque no se invoca en ninguna parte un campo de la misma, al menos en este ejemplo.

Sería bueno que nos postearas un volcado de la base para poder hacer pruebas, porque sin tablas con datos es difícil hacer pruebas. ¿Puedes?
__________________
¿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 18/06/2010, 09:22
Avatar de deniz  
Fecha de Ingreso: junio-2008
Ubicación: Bahía Blanca
Mensajes: 41
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: WITH ROLLUP no me suma una columna

Hola gnzsoloyo si por supuesto te copio el volcado

Código MySQL:
Ver original
  1. CREATE TABLE IF NOT EXISTS `RECOMENDACION` (
  2.   `idRecomendacion` int(11) NOT NULL auto_increment,
  3.   `idUsuario` varchar(255) default NULL,
  4.   `amigo` varchar(255) default NULL,
  5.   `lead` tinyint(1) NOT NULL default '0',
  6.   `click` tinyint(1) NOT NULL default '0',
  7.   `fecha` varchar(14) NOT NULL,
  8.   `fechaClick` varchar(14) NOT NULL,
  9.   `fechaLead` varchar(14) default NULL,
  10.   `puntos` int(11) NOT NULL default '50',
  11.   PRIMARY KEY  (`idRecomendacion`)
  12. ) ENGINE=InnoDB  DEFAULT CHARSET=latin1 COMMENT='Representa las recomendaciones hechas por los usuarios' AUTO_INCREMENT=31 ;
  13.  
  14.  
  15.  
  16. INSERT INTO `RECOMENDACION` (`idRecomendacion`, `idUsuario`, `amigo`, `lead`, `click`, `fecha`, `fechaClick`, `fechaLead`, `puntos`) VALUES
  17. (1, '[email protected]', 'asdfasdf4343434343434', 0, 0, '20100101000000', '', '', 50),
  18. (4, '[email protected]', 'adsfatraertatrggdf', 0, 0, '20100103000000', '', '', 0),
  19. (6, '[email protected]', 'erferer4rer4r45455', 1, 0, '20100105000000', '', '20100107000000', 500),
  20. (21, '[email protected]', 'sdlkfjmwoeiruq09ewrn', 0, 0, '20100107000000', '', '', 0),
  21. (26, '[email protected]', 'asdmfvnweoriuqewr9iu', 0, 0, '20100105000000', '', '', 0),
  22. (27, '[email protected]', 'adsfcweripeo489r8', 0, 0, '20100109000000', '', '', 0),
  23. (28, '[email protected]', 'sdjfmoeitu495845r45r454', 0, 0, '20100111000000', '', '', 0),
  24. (30, '[email protected]', 'asdfkjaeworiewadsf', 0, 0, '20100212000000', '', '', 0);

Lo de la tabla USUARIO efectivamente en ese ejemplo esta demas ;) puedes quitarlo (es que luego lo uso, en este caso no influye).

Con
Código MySQL:
Ver original
  1. IF( leads1 IS NULL , 0, leads1 ) AS leads,
no alcanza para poner en 0 los valores NULL ? Ya no se que hacer para que me sume esa columna....

Si sacas algo en limpio nos comentas!

Muchas gracias

Última edición por deniz; 18/06/2010 a las 13:12
  #4 (permalink)  
Antiguo 18/06/2010, 10:29
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, 4 meses
Puntos: 2658
Respuesta: WITH ROLLUP no me suma una columna

A mí me parece que lo que están mal planteados son los agrupamientos.
Además, en la miestra sólo tienes un lead ingresado, por lo que es propenso a errores de interpretación.
¿Cuáles son los subtotales y totales que se quieren obtener?

¿Podrías ser algo así:
Código MySQL:
Ver original
  1.   IF(fecha is null, '', idUsuario) IDUSUARIO,
  2.   IF(fecha IS NULL,IF(IDUSUARIO IS NULL,'TOTAL','Subtotal'), fecha) FECHA,
  3.   lead
  4.   (SELECT
  5.     IF(fecha IS NULL, null, idUsuario) idUsuario,
  6.     fecha,
  7.     SUM(lead) lead
  8.   FROM recomendacion r
  9.   GROUP BY idUsuario, fecha
  10.   WITH ROLLUP) T1;
__________________
¿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 18/06/2010, 11:14
Avatar de deniz  
Fecha de Ingreso: junio-2008
Ubicación: Bahía Blanca
Mensajes: 41
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: WITH ROLLUP no me suma una columna

Hola, he probado tu consulta, y ha ido muy bien, pero no me interesa calcular sub.totales, solo los totales, y es justamente lo que no me sale Que vuelta le podriamos dar ?

Por otra parte, tienes razon tengo 1 solo lead ingresado y puede que me traiga problemas pero en realidad es un escenario posible..


Sigo probando tu idea, muchas gracias por tu atencion, si tienes alguna idea mas te agredezco
  #6 (permalink)  
Antiguo 18/06/2010, 11:30
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, 4 meses
Puntos: 2658
Respuesta: WITH ROLLUP no me suma una columna

Cita:
Hola, he probado tu consulta, y ha ido muy bien, pero no me interesa calcular sub.totales, solo los totales, y es justamente lo que no me sale Que vuelta le podriamos dar ?
Bien, un poco más claro, por favor: ¿Totales de qué y agrupados en base a qué criterios...?
Es decir:
- Totales por fecha (se eliminan los usuarios)
- Totales por usuario (se eliminan las fechas)
- Totales por usuario y fecha (sólo quedan los campos acumulables juto a la fecha y los usuarios)
- Totales por usuario y subtotales por fecha (sólo quedan los campos acumulables junto a la fecha y los usuarios)
- Subtotales por usuario y totales por fecha (sólo quedan los campos acumulables junto a la fecha y los usuarios)

Porque eso es lo que debes definir primero. La sintaxis variará conforme sea lo que necesitas...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #7 (permalink)  
Antiguo 18/06/2010, 11:38
Avatar de deniz  
Fecha de Ingreso: junio-2008
Ubicación: Bahía Blanca
Mensajes: 41
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: WITH ROLLUP no me suma una columna

Disculpas por mi ambigüedad...

Necesito totales por fechas, es decir, para cada fecha calcular la cantidad de leads y recomendaciones (ya esta hecho). Luego agregar una fila mas con los totales, que corresponden a los valores acumulados de las columnas numericas ( leads y recomendaciones ). Tengo algo mal hecho en la query?

Gracias
  #8 (permalink)  
Antiguo 18/06/2010, 12:06
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, 4 meses
Puntos: 2658
Respuesta: WITH ROLLUP no me suma una columna

Que la has escrito innecesariamente complicada:
Código MySQL:
Ver original
  1.   IFNULL(fecha, 'Totales') FECHA,
  2.   COUNT(idRecomendacion) recomendaciones,
  3.   SUM(lead) leads
  4. FROM recomendacion r
Estabas haciendo que la subconsulta, que ya devolvía lo que necesitabas, perdiera las ´líneas que hacían posible funcionar al ROLLUP.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #9 (permalink)  
Antiguo 18/06/2010, 13:06
Avatar de deniz  
Fecha de Ingreso: junio-2008
Ubicación: Bahía Blanca
Mensajes: 41
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: WITH ROLLUP no me suma una columna

Lo que me dices no me sirve, tengo que cruzar datos entre las fechas y las fechasLead por eso hago un left join. La mejoro pero sigue sin calcularme el total para la columna Leads.

Código MySQL:
Ver original
  1.   IFNULL(r.fecha, 'Totales') fecha,
  2.   COUNT(r.idRecomendacion) recomendaciones,
  3.   IFNULL(leads, 0) leads
  4.     RECOMENDACION r
  5.     (
  6.         SELECT
  7.             r.fechaLead,
  8.             SUM(r.lead) leads
  9.         FROM
  10.             RECOMENDACION r
  11.         WHERE
  12.             r.fechaLead IS NOT NULL
  13.         GROUP BY
  14.             substr(r.fechaLead, 1, 8)
  15.     ) aux ON (substr(aux.fechaLead, 1, 8) = substr(r.fecha, 1, 8))
  16.     substr(r.fecha, 1, 8) WITH ROLLUP

Gracias
  #10 (permalink)  
Antiguo 18/06/2010, 13:15
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, 4 meses
Puntos: 2658
Respuesta: WITH ROLLUP no me suma una columna

Explicame la lógica de tu consulta, porque yo la veo innecesaria...
Estás primero sumando los leads de la tabla y luego, cruzando ese resultado con la misma tabla para combinarlo con la cuenta de recomendaciones que coinciden en la misma fecha.

En esencia, es lo mismo que yo te propongo: Las funciones SUM() y COUNT() aplicadas sobre campos sólo suman y cuentan campos no nulos, por lo que el resultado debería ser ése.
Al aplicarlo con agrupamiento por fecha, devuelve los valores acumulados en cada día, mientras que el ROLLUP exterior permite tomar la suma y cuenta total.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 18/06/2010 a las 13:21
  #11 (permalink)  
Antiguo 18/06/2010, 13:20
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, 4 meses
Puntos: 2658
Respuesta: WITH ROLLUP no me suma una columna

Tu resultado:
Código MySQL:
Ver original
  1. +----------------+-----------------+-------+
  2. | fecha          | recomendaciones | leads |
  3. +----------------+-----------------+-------+
  4. | 20100101000000 |               1 |     0 |
  5. | 20100103000000 |               1 |     0 |
  6. | 20100105000000 |               2 |     0 |
  7. | 20100107000000 |               1 |     1 |
  8. | 20100109000000 |               1 |     0 |
  9. | 20100111000000 |               1 |     0 |
  10. | 20100212000000 |               1 |     0 |
  11. | 20100212000000 |               8 |     0 |
  12. +----------------+-----------------+-------+
  13. 8 rows in set (0.00 sec)

Mi resultado:
Código MySQL:
Ver original
  1. +----------------+-----------------+-------+
  2. | FECHA          | recomendaciones | leads |
  3. +----------------+-----------------+-------+
  4. | 20100101000000 |               1 |     0 |
  5. | 20100103000000 |               1 |     0 |
  6. | 20100105000000 |               2 |     1 |
  7. | 20100107000000 |               1 |     0 |
  8. | 20100109000000 |               1 |     0 |
  9. | 20100111000000 |               1 |     0 |
  10. | 20100212000000 |               1 |     0 |
  11. | Totales        |               8 |     1 |
  12. +----------------+-----------------+-------+

¿Alguna duda?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #12 (permalink)  
Antiguo 18/06/2010, 13:37
Avatar de deniz  
Fecha de Ingreso: junio-2008
Ubicación: Bahía Blanca
Mensajes: 41
Antigüedad: 15 años, 9 meses
Puntos: 0
Sonrisa Respuesta: WITH ROLLUP no me suma una columna

jeje, si es que tu resultado me cuenta 1 lead en la fecha 20100105 cuando el lead en realidad es en la fecha 20100107...entendes? Son dos conjuntos de fechas las que tengo que cruzar.

Me he confundido en la query, en realidad para contar los leads me alcanza con un count(*)

Código MySQL:
Ver original
  1.   IFNULL(r.fecha, 'Totales') fecha,
  2.   COUNT(r.idRecomendacion) recomendaciones,
  3.   IFNULL(leads, 0) leads
  4.     RECOMENDACION r
  5.     (
  6.         SELECT
  7.             r.fechaLead,
  8.              count( * )  leads
  9.         FROM
  10.             RECOMENDACION r
  11.         WHERE
  12.             r.fechaLead IS NOT NULL
  13.         GROUP BY
  14.             substr(r.fechaLead, 1, 8)
  15.     ) aux ON (substr(aux.fechaLead, 1, 8) = substr(r.fecha, 1, 8))
  16.     substr(r.fecha, 1, 8) WITH ROLLUP

Si te fijas las salidas tuya y mia, no coinciden en las fechas que te indico.

Gracias!!
  #13 (permalink)  
Antiguo 18/06/2010, 13:58
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, 4 meses
Puntos: 2658
Respuesta: WITH ROLLUP no me suma una columna

Eso se soluciona con un ORDER BY en la subselect...

Lo que sí facilitaría evitar este tipo de problemas hubiese sido poner la fecha con el tipo de dato correcto (DATE) y no como VARCHAR. Además, ahorrarías espacio en disco (8 bytes contra 14).

Ahora estoy saliendo de la empresa. Luego te mando la propuesta.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #14 (permalink)  
Antiguo 18/06/2010, 16:51
Avatar de deniz  
Fecha de Ingreso: junio-2008
Ubicación: Bahía Blanca
Mensajes: 41
Antigüedad: 15 años, 9 meses
Puntos: 0
Sonrisa Respuesta: WITH ROLLUP no me suma una columna

Genial si me podes orientar porque ya estoy algo embotada

Buen finde!
  #15 (permalink)  
Antiguo 18/06/2010, 18:19
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, 4 meses
Puntos: 2658
Respuesta: WITH ROLLUP no me suma una columna

Bien, habiendo tenido ya oportunidad de analizar el contenido de la tabla y viendo la estructura de datos, el error parece provenir de un defecto de diseño, sumado a un un desaprovechamiento de las propiedades de los campos.
El tema es así: Hay cierta inconsistencia en la estructura de datos porque tienes dos columnas de fecha distintas y no hay forma que cumplan con una consulta óptima en esas condiciones. Además una de ellas hace que el otro campo se vuelva innecesario si sólo variará su valor de 1 a 0.
Tu estructura es esta:

Código MySQL:
Ver original
  1. CREATE TABLE  `recomendacion` (
  2.   `idRecomendacion` int(11) NOT NULL auto_increment,
  3.   `idUsuario` varchar(255) default NULL,
  4.   `amigo` varchar(255) default NULL,
  5.   `lead` tinyint(1) NOT NULL default '0',
  6.   `click` tinyint(1) NOT NULL default '0',
  7.   `fecha` varchar(14) NOT NULL,
  8.   `fechaClick` varchar(14) NOT NULL,
  9.   `fechaLead` varchar(14) default NULL,
  10.   `puntos` int(11) NOT NULL default '50',
  11.   PRIMARY KEY  (`idRecomendacion`)
  12. COMMENT='Representa las recomendaciones hechas por los usuarios';
Todos los campos están declarados como NOT NULL, pero el caso es que de esos al menos fechaClick y fechaLead no deberían serlo porque sólo cuando se producen los eventos que los alimentan.
Al cargarlos con un vacío no permites que exista un valor NULL, con lo que si quisieras contar los campos, los va a contar como si fuesen fechas. Por eso es que no sirve ese esquema.
Esto es lo que hay:
Código MySQL:
Ver original
  1. mysql> SELECT idUsuario, lead, fecha, fechaLead, puntos, idRecomendacion
  2.     -> FROM recomendacion r;
  3. +--------------------------+------+----------------+----------------+--------+-----------------+
  4. | idUsuario                | lead | fecha          | fechaLead      | puntos | idRecomendacion |
  5. +--------------------------+------+----------------+----------------+--------+-----------------+
  6. | [email protected]      |    0 | 20100101000000 |                |     50 |               1 |
  7. | [email protected]      |    0 | 20100103000000 |                |      0 |               4 |
  8. | [email protected]      |    1 | 20100105000000 | 20100107000000 |    500 |               6 |
  9. | [email protected]      |    0 | 20100107000000 |                |      0 |              21 |
  10. | [email protected] |    0 | 20100105000000 |                |      0 |              26 |
  11. | [email protected]   |    0 | 20100109000000 |                |      0 |              27 |
  12. | [email protected]   |    0 | 20100111000000 |                |      0 |              28 |
  13. | [email protected]  |    0 | 20100212000000 |                |      0 |              30 |
  14. +--------------------------+------+----------------+----------------+--------+-----------------+
  15. 8 rows in set (0.00 sec)

La tabla, para tener una estructura coherente debería ser:
Código MySQL:
Ver original
  1. CREATE TABLE  `recomendacion` (
  2.   `idRecomendacion` int(11) UNSIGNED NOT NULL auto_increment,
  3.   `idUsuario` varchar(255) default NULL,
  4.   `amigo` varchar(255) default NULL,
  5.   `lead` tinyint(1) NOT NULL default '0',
  6.   `click` tinyint(1) NOT NULL default '0',
  7.   `fecha` DATE NOT NULL,
  8.   `fechaClick` DATE NULL,
  9.   `fechaLead` DATE NULL,
  10.   `puntos` int(11) UNSIGNED NOT NULL default '50',
  11.   PRIMARY KEY  (`idRecomendacion`)
  12. COMMENT='Representa las recomendaciones hechas por los usuarios';
Los datos deberían ir así:
Código MySQL:
Ver original
  1. INSERT INTO `RECOMENDACION`
  2. (`idRecomendacion`, `idUsuario`, `amigo`, `lead`, `click`, `fecha`, `fechaClick`, `fechaLead`, `puntos`)
  3. (1,   '[email protected]',       'asdfasdf4343434343434', 0, 0,  '2010-01-01', NULL, NULL, 50),
  4. (4,   '[email protected]',       'adsfatraertatrggdf', 0, 0,     '2010-01-03', NULL, NULL, 0),
  5. (6,   '[email protected]',       'erferer4rer4r45455', 1, 0,     '2010-01-05', NULL, '2010-01-07', 500),
  6. (21,   '[email protected]',      'sdlkfjmwoeiruq09ewrn', 0, 0,   '2010-01-07', NULL, NULL, 0),
  7. (26,   '[email protected]', 'asdmfvnweoriuqewr9iu', 0, 0,   '2010-01-05', NULL, NULL, 0),
  8. (27,   '[email protected]',   'adsfcweripeo489r8', 0, 0,      '2010-01-09', NULL, NULL, 0),
  9. (28,   '[email protected]',   'sdjfmoeitu495845r45r454', 0, 0,'2010-01-11', NULL, NULL, 0),
  10. (30,   '[email protected]',  'asdfkjaeworiewadsf', 0, 0,     '2010-02-12', NULL, NULL, 0);
Y la consulta sería:
Código MySQL:
Ver original
  1. SELECT IFNULL(FECHA_LEAD,  'Totales') FECHA, RECOMENDACIONES, LEADS
  2.   (SELECT
  3.     IF(fechaLead IS NOT NULL, fechaLead, fecha) FECHA_LEAD,
  4.     COUNT(idRecomendacion) recomendaciones,
  5.     COUNT(fechaLead) leads
  6.   FROM recomendacion r
  7.   GROUP BY FECHA_lead WITH ROLLUP) T1
  8. ORDER BY FECHA;
  9.  
  10. +------------+-----------------+-------+
  11. | FECHA      | RECOMENDACIONES | LEADS |
  12. +------------+-----------------+-------+
  13. | 2010-01-01 |               1 |     0 |
  14. | 2010-01-03 |               1 |     0 |
  15. | 2010-01-05 |               1 |     0 |
  16. | 2010-01-07 |               2 |     1 |
  17. | 2010-01-09 |               1 |     0 |
  18. | 2010-01-11 |               1 |     0 |
  19. | 2010-02-12 |               1 |     0 |
  20. | Totales    |               8 |     1 |
  21. +------------+-----------------+-------+
  22. 8 rows in set (0.00 sec)

Nota: es muchísmo más eficiente guardar una fecha como DATE o DATETIME que como VARCHAR. ¿Por qué las pusiste en ese tipo de campo?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #16 (permalink)  
Antiguo 22/06/2010, 06:34
Avatar de deniz  
Fecha de Ingreso: junio-2008
Ubicación: Bahía Blanca
Mensajes: 41
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: WITH ROLLUP no me suma una columna

Hola gnzsoloyo, estuve analizando todo lo que comentas y la verdad eres un grande! Voy a tener muy en cuenta tus comentarios para mis proximos diseños de tablas, tus consejos me han sido de gran utilidad, muchas gracias!!

Todo perfecto! tema solucionado
  #17 (permalink)  
Antiguo 23/06/2010, 11:31
Avatar de deniz  
Fecha de Ingreso: junio-2008
Ubicación: Bahía Blanca
Mensajes: 41
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: WITH ROLLUP no me suma una columna

Hola gnzsoloyo, encontre un bug en la ultima consulta que me sugeristes y es que me cuenta dos recomendaciones en la fecha 2010-01-07, cuando deberia ser en la fecha 2010-01-05. Tienes idea como puedo hacer para discriminar ese caso?

Código MySQL:
Ver original
  1. SELECT IFNULL(FECHA_LEAD,  'Totales') FECHA, RECOMENDACIONES, LEADS
  2.   (SELECT
  3.     IF(fechaLead IS NOT NULL, fechaLead, fecha) FECHA_LEAD,
  4.     COUNT(idRecomendacion) recomendaciones,
  5.     COUNT(fechaLead) leads
  6.   FROM recomendacion r
  7.   GROUP BY FECHA_lead WITH ROLLUP) T1
  8. ORDER BY FECHA;
  9.  
  10. +------------+-----------------+-------+
  11. | FECHA      | RECOMENDACIONES | LEADS |
  12. +------------+-----------------+-------+
  13. | 2010-01-01 |               1 |     0 |
  14. | 2010-01-03 |               1 |     0 |
  15. | 2010-01-05 |               1 |     0 |
  16. | 2010-01-07 |               2 |     1 |
  17. | 2010-01-09 |               1 |     0 |
  18. | 2010-01-11 |               1 |     0 |
  19. | 2010-02-12 |               1 |     0 |
  20. | Totales    |               8 |     1 |
  21. +------------+-----------------+-------+
  22. 8 rows IN SET (0.00 sec)


Saludos!

Etiquetas: mysql;with, rollup
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 13:43.