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

Select con group by ¿no puedo obtener un total general?

Estas en el tema de Select con group by ¿no puedo obtener un total general? en el foro de Mysql en Foros del Web. Pues eso, tengo una consulta donde agrupo un campo y cuento cuantos registros tienen dicho campo igual, tambien tengo una fecha de introducción del dato ...
  #1 (permalink)  
Antiguo 13/10/2008, 12:57
Avatar de intergus  
Fecha de Ingreso: mayo-2007
Mensajes: 126
Antigüedad: 16 años, 11 meses
Puntos: 3
Select con group by ¿no puedo obtener un total general?

Pues eso, tengo una consulta donde agrupo un campo y cuento cuantos registros tienen dicho campo igual, tambien tengo una fecha de introducción del dato minima de cada grupo, es decir para que se entienda:

Registros
fecha || que
==============
22-02-08 || perro
25-02-08 || gato
10-02-08 || perro
22-02-08 || perro
22-02-08 || lobo
02-01-08 || lobo

el select que tengo es:

SELECT MIN(fecha) as fechamin, que, count(*) as q FROM $tabla where que !='' AND que !='t' group by que order by q desc, que asc

esto me devuelve

perro 3
lobo 2
gato 1


Mi pregunta es: puedo obtener un total absoluto, es decir un 6 de algun modo excepto recorriendo la tupla con un for, porque lo necesito antes de recorrer la tupla de resultados pues es para la cabecera de la tabla. Y de algún modo puedo obtener la fecha minima de todas, además de la minima de cada grupo que estoy obteniendo ahora?

Es decir antes de recorrer toda la tupla (pues eso lo hago colocando los datos en una tabla con un bucle for, me gustaría obtener la fecha menor de todas 02-01-08 y el numero total de registros que cumplian el select "6"

Gracias de antemano por las pistas que podais darme

Un saludo
  #2 (permalink)  
Antiguo 13/10/2008, 13:56
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: Select con group by ¿no puedo obtener un total general?

Si no agrupas por ningún campo podrás obtener el total

SELECT MIN(fecha) as fechamin, count(*) total FROM tutabla
  #3 (permalink)  
Antiguo 14/10/2008, 02:50
Avatar de intergus  
Fecha de Ingreso: mayo-2007
Mensajes: 126
Antigüedad: 16 años, 11 meses
Puntos: 3
Respuesta: Select con group by ¿no puedo obtener un total general?

Gracias Jurena pero es que necesito sacar la lista agrupada, pues sino serían miles de registros los que montaría la tabla.

Lo que propones es que primero haga una consulta, imprima los datos obtenidos y luego haga otra consulta con la de agrupación???
  #4 (permalink)  
Antiguo 14/10/2008, 03:14
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: Select con group by ¿no puedo obtener un total general?

efectivamente. No creo que puedas agrupar y contar por grupos y el total en una consulta. Haz primero la consulta para el total y cargas el dato mediante programación; a continuación haces la otra consulta con agrupación. Esto es lo que suelo hacer yo en estos casos.
  #5 (permalink)  
Antiguo 14/10/2008, 07:26
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: Select con group by ¿no puedo obtener un total general?

Echale una mirada a eso: 12.10.2. Modificadores de GROUP BY.
Esto implica que para lograr un agrupamiento y una suma total, lo que estás tratando de conseguir es un reporte del tipo
------------------------------
MAX, MIN, Subtotal
...
------------------------------
Max, Min, Total
------------------------------

Eso tal vez salga de:
Código sql:
Ver original
  1. SELECT MIN(fecha) FechaMin, que, COUNT(*) Cant
  2. FROM tabla
  3. WHERE que <>'' AND que <>'t'
  4. GROUP BY que ASC WITH ROLLUP;
Habría que probar.

Nota: la cláusula WITH ROLLUP no permite el uso de ORDER BY, los ordenamientos se deben definir en los campos del GROUP BY.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
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 04:47.