Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   Bases de Datos General (http://www.forosdelweb.com/f21/)
-   -   Consulta con fechas (http://www.forosdelweb.com/f21/consulta-con-fechas-304447/)

andinistas 02/06/2005 22:53

Consulta con fechas
 
Hola, resulta que tengo un sistema de noticias de las cuales tengo mas de 5.500 mil registros, y cada dìa crece más y más, yo necesito sacar el cálculo de cuantas noticias se ingresan por mes a la tabla de noticias.

Estaba probando con esta consulta me ha funcionado pero pasándole parámetros

SELECT COUNT(*) AS TOTAL
FROM `noticias`
WHERE fecha
between '2005-05-01' and '2005-05-31'

resultado

TOTAL = 754

pero yo quisiera hacer la lista de todos los meses con sus totales, por ejemplo;

Enero=500
Febrero=600
Marzo=750
Abril=785
Mayo=784
Junio=100
Julio=0
Agosto=0
Septiembre=0
Octubre=0
Noviembre=0
Diciembre=0

y los meses que no se han ingresado ninguna noticia pues que aparezca en cero o nada.

alguien ha hecho esto?

si me pueden ayudar ;-)

klyfa 03/06/2005 03:24

SELECT tbltemp.*,
month(tbltemp.fecha)as mes,
year(tbltemp.fecha)as anio,count(year(tbltemp.fecha)) FROM tbltemp
group by anio,mes

prueba si esto te sirbe,

PosDon 03/06/2005 06:33

Es un poquito largo, pero bueno, como no se que SGBD utilizas te mando esto que valdría para Oracle, SQL Server y MySQL (Con Oracle igual se podría acortar con el DECODE()).

Código:

SELECT year(fecha) anyo,
        COUNT(CASE(month(fecha)) WHEN 1 THEN 1 END) Enero,
        COUNT(CASE(month(fecha)) WHEN 2 THEN 1 END) Febrero,
        COUNT(CASE(month(fecha)) WHEN 3 THEN 1 END) Marzo,
        COUNT(CASE(month(fecha)) WHEN 4 THEN 1 END) Abril,
        COUNT(CASE(month(fecha)) WHEN 5 THEN 1 END) Mayo,
        COUNT(CASE(month(fecha)) WHEN 6 THEN 1 END) Junio,
        COUNT(CASE(month(fecha)) WHEN 7 THEN 1 END) Julio,
        COUNT(CASE(month(fecha)) WHEN 8 THEN 1 END) Agosto,
        COUNT(CASE(month(fecha)) WHEN 9 THEN 1 END) Septiembre,
        COUNT(CASE(month(fecha)) WHEN 10 THEN 1 END) Octubre,
        COUNT(CASE(month(fecha)) WHEN 11 THEN 1 END) Noviembre,
        COUNT(CASE(month(fecha)) WHEN 12 THEN 1 END) Diciembre
FROM noticias
GROUP BY year(fecha);

Editado: Bueno con oracle no estoy seguro de si funcionaría, no recuerdo si existían las funciones de year() y month().

andinistas 03/06/2005 10:21

ok
 
oK Gracias posDon, ha funcionado, adjunto una imagen de la consulta, aunque me gustaría hacer una columna más para colocar los totales de cada año

http://www.andinistas.com.ve/andinistas/conteo.gif

sera posible hacer esto por SQL? o me tocaría directamente por PHP?

PosDon 06/06/2005 02:06

Nada, añadir un campo contador, sin restringir por la fecha:

Código:

SELECT year(fecha) anyo,
        COUNT(CASE(month(fecha)) WHEN 1 THEN 1 END) Enero,
        COUNT(CASE(month(fecha)) WHEN 2 THEN 1 END) Febrero,
        COUNT(CASE(month(fecha)) WHEN 3 THEN 1 END) Marzo,
        COUNT(CASE(month(fecha)) WHEN 4 THEN 1 END) Abril,
        COUNT(CASE(month(fecha)) WHEN 5 THEN 1 END) Mayo,
        COUNT(CASE(month(fecha)) WHEN 6 THEN 1 END) Junio,
        COUNT(CASE(month(fecha)) WHEN 7 THEN 1 END) Julio,
        COUNT(CASE(month(fecha)) WHEN 8 THEN 1 END) Agosto,
        COUNT(CASE(month(fecha)) WHEN 9 THEN 1 END) Septiembre,
        COUNT(CASE(month(fecha)) WHEN 10 THEN 1 END) Octubre,
        COUNT(CASE(month(fecha)) WHEN 11 THEN 1 END) Noviembre,
        COUNT(CASE(month(fecha)) WHEN 12 THEN 1 END) Diciembre,
        COUNT(fecha) Total
FROM noticias
GROUP BY year(fecha);

Editado: Sin restringir por el mes, perdon :P

:adios:

andinistas 06/06/2005 21:22

OK GRACIAS PosDon me ha funcionado correctamente :o)


La zona horaria es GMT -6. Ahora son las 19:11.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.