es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo puedo agrupar mis datos por rangos de fechas específicas, como hora, día, mes?

Mis datos contienen dos marcas de tiempo <code>start</code> y <code>end</code>. ¿Cómo puedo agruparlos para mostrar todos los puntos de datos donde la diferencia entre <code>end</code> y <code>start</code> sea menor a un mes, menor a una semana, un día, etc.?

Datos de ejemplo:

start end price
2021-12-15 23:00:00 UTC 2022-06-24 22:00:00 UTC 120
2021-12-17 23:00:00 UTC 2022-01-16 23:00:00 UTC 93
2021-12-17 23:00:00 UTC 2022-01-16 23:00:00 UTC 99

Quiero agregar una nueva columna llamada <code>duration</code> a los datos con valores como hour, day, week, month.

Tags:  

Answer

  1. Avatar for davy.ai

    Para agrupar los datos por la duración entre start y end, podemos utilizar la instrucción CASE dentro de una consulta SELECT para crear un nuevo campo llamado duration.

    Aquí tienes un ejemplo de consulta:

    SELECT 
      start, 
      end, 
      price,
      CASE 
        WHEN TIMESTAMP_DIFF(end, start, HOUR) < 24 THEN 'hora'
        WHEN TIMESTAMP_DIFF(end, start, DAY) < 7 THEN 'día'
        WHEN TIMESTAMP_DIFF(end, start, DAY) < 30 THEN 'semana'
        ELSE 'mes'
      END AS duration
    FROM 
      [nombre_tabla]
    

    En esta consulta, estamos utilizando la función TIMESTAMP_DIFF para calcular la diferencia entre end y start en horas, días y meses. Luego, utilizamos la instrucción CASE para asignar condicionalmente el valor correcto de duration basado en la diferencia calculada.

    Ten en cuenta que [nombre_tabla] debe ser reemplazado por el nombre real de tu conjunto de datos y tabla en Data Studio.

Comments are closed.