2011-11-30 14 views
6

Estoy tratando de hacer una consulta para obtener datos de una base de datos, pero no puedo hacerlo.Dificultades para configurar una consulta mySQL difícil

tengo el siguiente cuadro con datos ficticios:

id | date 

0 | 2011-11-25 20:12:32 
1 | 2011-11-15 20:12:32 
2 | 2011-11-05 20:12:32 
3 | 2011-10-25 20:12:32 
4 | 2011-10-15 20:12:32 
5 | 2011-10-05 20:12:32 
6 | 2010-10-25 20:12:32 
7 | 2010-04-25 20:12:32 
8 | 2009-07-25 20:12:32 

Quiero hacer una consulta que:

  • Ordena la fecha por año, a continuación, Mes y luego el día
  • Luego debería contar cuántas veces de cada mes en estos años hay.

Si no obtiene lo que quiero decir: Se debe dar un resultado algo como esto (utilizando los datos ficticios de la tabla):


Year | Month | amount (of rows with that month in that year) 

2011 | 11 | 3 
2011 | 10 | 3 
2010 | 4  | 2 
2009 | 7  | 1 

tengo algún conocimiento de mySQL, pero esto es demasiado para mí. :)

Gracias de antemano

+0

+1 Para mostrar los datos de las muestras y la salida deseada. Solo me falta la sección que muestra lo que has intentado hasta ahora ... –

Respuesta

10
SELECT YEAR(`date`) AS `year`, 
     MONTH(`date`) AS `month`, 
     COUNT(*)  AS amount 
FROM `table` 
GROUP BY YEAR(`date`), 
      MONTH(`date`) 
ORDER BY `date` DESC 
+0

¡OMG! Este código funciona Este código es tan simple cuando lo miro. Para mal, no pude construirlo yo mismo. Bueno, todavía tengo mucho que aprender. xD Muchas gracias, Jake – DijkeMark

0

utilizar esto en su consulta:

SELECT count(*) from t GROUP BY YEAR(date), MONTH(date) 
1
SELECT YEAR(date) AS Year, MONTH(date) AS Month, COUNT(*) as amount 
FROM table 
GROUP BY LEFT(date, 7) 
ORDER BY date DESC 
Cuestiones relacionadas