none
Agrupaciones RRS feed

  • Pregunta

  • Buenas tardes a todos, les comento.

    Tengo estos resultados de un solo campo en una tabla (estados_vehiculo) SQL Server 2008

    el problema que tengo es que necesito agrupar por minuto, no importa las horas ni nada, solo por minuto,

    desde el minuto 0 con 0 segundos, hasta el minuto 0 con 59 segundos y así ir agrupando. Estoy intentando con la soguiente consulta.

    //ejemplo para agrupación cada 10 minutos

    SELECT fechahora FROM estados_vehiculo GROUP BY (DATEPART(MINUTE, fechahora) / 10), fechahora order by fechahora

    pero aún así no obtengo los resultados deseados. Como podría reformular mi consulta? algún ejemplo que puedan compartir.

    Muchas gracias a todos por su preciado tiempo.

    Saludos

    lunes, 27 de agosto de 2018 16:49

Respuestas

  • Hola,cuales son los resultados deseados?

    SELECT COUNT(*) AS CANTIDADXMINUTO, DATEPART(MINUTE, fechahora)  FROM ESTADOS_VEHICULO
    GROUP BY DATEPART(MINUTE, fechahora)
    


    Votar es agradecer.
    Saludos.
    Lima-Perú

    lunes, 27 de agosto de 2018 17:39
  • Hola:

    Reformando un pelín la consulta que ya te han ofrecido, puedes obtener la cuenta en una tabla derivada y luego visualizar los resultados, tal que así:

    create table estadosvehiculo (fecha datetime )
    go
    insert into estadosvehiculo (fecha) values
    ('20180720 01:00:40.000'),
    ('20180720 01:00:44.000'),
    ('20180720 01:00:57.000'),
    ('20180720 01:01:44.000'),
    ('20180720 01:02:40.000'),
    ('20180720 01:02:44.000'),
    ('20180720 01:03:44.000'),
    ('20180720 01:04:40.000'),
    ('20180720 01:04:44.000'),
    ('20180720 01:05:44.000'),
    ('20180720 01:05:47.000'),
    ('20180720 01:05:48.000'),
    ('20180720 01:05:52.000'),
    ('20180720 01:07:13.000')
    go
    SELECT e.fecha,
           o.cantidad,
           o.minuto
    FROM estadosvehiculo e
         INNER JOIN
    (
        SELECT COUNT(*) AS cantidad,
               DATEPART(minute, fecha) AS minuto
        FROM estadosvehiculo
        GROUP BY DATEPART(minute, fecha)
    ) AS o ON o.minuto = DATEPART(minute, e.fecha);

    Con una salida como esta:

    Un saludo

    • Marcado como respuesta Enrique Aleman martes, 28 de agosto de 2018 12:13
    lunes, 27 de agosto de 2018 19:01

Todas las respuestas

  • Hola,cuales son los resultados deseados?

    SELECT COUNT(*) AS CANTIDADXMINUTO, DATEPART(MINUTE, fechahora)  FROM ESTADOS_VEHICULO
    GROUP BY DATEPART(MINUTE, fechahora)
    


    Votar es agradecer.
    Saludos.
    Lima-Perú

    lunes, 27 de agosto de 2018 17:39
  • Hola, lo que necesito es obtener lo siguiente.

    ejemplo:

    2018-08-27 15:00:00

    2018-08-27 15:00:23

    2018-08-27 15:00:45

    minuto 00 = 3 registros

    2018-08-27 15:01:06

    2018-08-27 15:01:19

    2018-08-27 15:01:35

    2018-08-27 15:01:54

    minuto 01 = 4 registros,

    etc, etc, etc. 

    Esa sería la idea.

    Muchas gracias

    Saludos

    lunes, 27 de agosto de 2018 18:46
  • Hola:

    Reformando un pelín la consulta que ya te han ofrecido, puedes obtener la cuenta en una tabla derivada y luego visualizar los resultados, tal que así:

    create table estadosvehiculo (fecha datetime )
    go
    insert into estadosvehiculo (fecha) values
    ('20180720 01:00:40.000'),
    ('20180720 01:00:44.000'),
    ('20180720 01:00:57.000'),
    ('20180720 01:01:44.000'),
    ('20180720 01:02:40.000'),
    ('20180720 01:02:44.000'),
    ('20180720 01:03:44.000'),
    ('20180720 01:04:40.000'),
    ('20180720 01:04:44.000'),
    ('20180720 01:05:44.000'),
    ('20180720 01:05:47.000'),
    ('20180720 01:05:48.000'),
    ('20180720 01:05:52.000'),
    ('20180720 01:07:13.000')
    go
    SELECT e.fecha,
           o.cantidad,
           o.minuto
    FROM estadosvehiculo e
         INNER JOIN
    (
        SELECT COUNT(*) AS cantidad,
               DATEPART(minute, fecha) AS minuto
        FROM estadosvehiculo
        GROUP BY DATEPART(minute, fecha)
    ) AS o ON o.minuto = DATEPART(minute, e.fecha);

    Con una salida como esta:

    Un saludo

    • Marcado como respuesta Enrique Aleman martes, 28 de agosto de 2018 12:13
    lunes, 27 de agosto de 2018 19:01