none
Consulta SQL RRS feed

  • Pregunta

  • Tengo una tabla de registros de temperaturas en el que la primera columna está la fecha en la segunda la hoa y en la tercera la temperatura, como es normal en la primera hay las fechas repetidas.
    Quiero crear una consulta que me de la temperatura maxima y minima del dia y la hora.
    Sacar la temperatura maxima o minima es sencillo, hago:

    SELECT Any2012.Data, Min(Any2012.Temp) AS Temp_min, Max(Any2012.Temp) AS Temp_max
    FROM Any2012
    GROUP BY Any2012.[Data]
    ORDER BY Any2012.Data;

    Lo que no consigo es sacar la hora por muchos manuales que vea.

    jueves, 23 de febrero de 2012 18:42

Todas las respuestas

  • Hola.

    Podrías hacer algo más o menos así:

    --create table Any2012 (Data date, Hora time, Temp numeric(5,2))
    
    insert Any2012 values ('20120223', '22:00', 20.5)
    insert Any2012 values ('20120223', '22:00', 20.5)
    insert Any2012 values ('20120223', '22:00', 19.5)
    
    select * from any2012
    
    ;with Cte as (
    select Data, 
      Hora, Temp, Ord_Temp_Min = row_number() over (partition by Data order by Temp),
      Ord_Temp_Max = row_number() over (partition by Data order by Temp desc)
    from Any2012
    
    )
    select A.Data, HMin.Hora as HoraMin, Min(A.Temp) AS Temp_min, HMax.Hora as HoraMax, Max(A.Temp) AS Temp_max
    from Any2012 A inner join 
      Cte HMin on A.Data = Hmin.Data and HMin.Ord_Temp_Min = 1 inner join
      Cte HMax on A.Data = Hmax.Data and HMax.Ord_Temp_Max = 1
    group by A.Data, HMin.Hora, HMax.Hora
    

    Si no te vale, nos dices.


    Alberto López Grande
    SQL Server MVP
    Visita mi blog en http://qwalgrande.blogspot.es/ Sígueme en twitter en http://twitter.com/qwalgrande

    jueves, 23 de febrero de 2012 21:11
  • Lo veo un poco liado, antes de nada decirte que lo que estoy haciendo es en Access 2010.
    jueves, 23 de febrero de 2012 23:04
  • Este es un foro de SQL Server. No deberías preguntarnos cosas de Access.

    MVP MCT MCTS Daniel Calbimonte

    http://elpaladintecnologico.blogspot.com

    viernes, 24 de febrero de 2012 13:35
  • Pues algo muy burdo sería así:

    Select Any2012.Data, Any2012.Hour, A.Temp_min, A.TempMax From
    (
    SELECT Any2012.Data, Min(Any2012.Temp) AS Temp_min, Max(Any2012.Temp) AS Temp_max
    FROM Any2012
    GROUP BY Any2012.[Data]
    ) As A, Any2012
    Where 
    Any2012.Temp = A.Temp_min Or 
    Any2012.Temp = A.Temp_max


    viernes, 24 de febrero de 2012 19:27