2012-03-14 16 views
12

Estoy tratando de obtener mi código de salida en el siguiente formato:grupo por mes de campo de marca de tiempo Unix

january 2012 - 34 
february 2012 - 23 

donde el 34 y 23 habría un recuento de las filas totales que se incluyen dentro de ese mes en el que tener la id_dealership de 7. Necesito esto para mostrar todos los datos de cada mes que se realizó una tarea.

La estructura de la tabla assignments es el siguiente:

id_dealer (int) 
date_assigned (int) 

He intentado esto pero no funciona en absoluto:

SELECT MONTH(date_assigned), YEAR(date_assigned), COUNT(*) 
FROM assignments 
GROUP BY MONTH(date_assigned), YEAR(date_assigned) 

Respuesta

41
SELECT 
    MONTH(FROM_UNIXTIME(date_assigned)), 
    YEAR(FROM_UNIXTIME(date_assigned)), 
    COUNT(*) 
FROM assignments 
GROUP BY 
    MONTH(FROM_UNIXTIME(date_assigned)), 
    YEAR(FROM_UNIXTIME(date_assigned)) 
+0

pateas el culo. :) – scarhand

+0

podría echarle un vistazo a esto - http://stackoverflow.com/questions/9699533/group-by-month-and-year-count-from-aother-table – scarhand

+0

Wow, no lo hice creo que esto fue posible. ¡Prestigio! –

1

Su columna date_assigned debe ser de tipo DATE. Que yo sepa MES trabaja en las columnas de fecha y si desea que el nombre de un mes a partir de una columna de uso FECHA: MONTHNAME(date_assigned)

+0

Esto no es perfecta solución del problema, pero útil. –

0

tratar esta consulta

SELECT 
    MONTH(FROM_UNIXTIME(date_assigned)), 
    YEAR(FROM_UNIXTIME(date_assigned)), 
    COUNT(*) 
FROM assignments 
GROUP BY 1,2 
+0

¿Puede explicar algunas palabras sobre cómo funciona esta consulta? – amarnath

Cuestiones relacionadas