none
Valori massimi raggruppati per data RRS feed

  • Domanda

  • Ciao a tutti,

    Ho il seguente problema:

    In una tabella ho i seguenti campi ID(pr. K), Data(gg,MM,yy,hh,mm,ss), Temperatura(float).

    Una riga per ogni ora del giorno.

    Vorrei estrarre per ogni giorno il valore massimo ( ma anche minimo) di temperatura.

    Non saprei da che parte iniziare... potete darmi un consiglio?

    Grazie per la paziente risposta.

    domenica 6 dicembre 2015 15:13

Risposte

  • Ciao,

    premesso che il tipo di dato utilizzato per il campo data sia di tipo DataOra e che la versione di Sql Server sia uguale o maggiore alla 2008, prendi spunto da questo esempio:

    USE TEMPDB
    GO
    --Creo la tabella
    CREATE TABLE dbo.Tabella
    (Id Int Identity,
     Data Datetime,
     Temperatura Float
     )
     GO
     -- Inserisco qualche valore
     INSERT INTO dbo.Tabella (Data,Temperatura)
     VALUES ('20151205 06:30:00',5.15),
            ('20151205 12:30:00',10.30),
    	('20151205 18:45:00',7.20),
    	('20151206 06:30:00',6.30),
            ('20151206 12:30:00',12.10),
    	('20151206 18:45:00',8.40)
    
    -- Select Finale
    SELECT CONVERT(Date,Data) AS Giorno,
           Min(Temperatura) AS MinDiTemperatura,
           Max(Temperatura) AS MaxDiTemperatura
    FROM   dbo.Tabella
    GROUP BY CONVERT(Date,Data)
    
    --Pulizia
    DROP TABLE dbo.Tabella
    
    /* Risultato
    Giorno     MinDiTemperatura       MaxDiTemperatura
    ---------- ---------------------- ----------------------
    2015-12-05 5,15                   10,3
    2015-12-06 6,3                    12,1
    
    (Righe interessate: 2)
    
    */

    Ciao

    Giorgio Rancati


    domenica 6 dicembre 2015 20:44
    Moderatore

Tutte le risposte

  • Ciao,

    premesso che il tipo di dato utilizzato per il campo data sia di tipo DataOra e che la versione di Sql Server sia uguale o maggiore alla 2008, prendi spunto da questo esempio:

    USE TEMPDB
    GO
    --Creo la tabella
    CREATE TABLE dbo.Tabella
    (Id Int Identity,
     Data Datetime,
     Temperatura Float
     )
     GO
     -- Inserisco qualche valore
     INSERT INTO dbo.Tabella (Data,Temperatura)
     VALUES ('20151205 06:30:00',5.15),
            ('20151205 12:30:00',10.30),
    	('20151205 18:45:00',7.20),
    	('20151206 06:30:00',6.30),
            ('20151206 12:30:00',12.10),
    	('20151206 18:45:00',8.40)
    
    -- Select Finale
    SELECT CONVERT(Date,Data) AS Giorno,
           Min(Temperatura) AS MinDiTemperatura,
           Max(Temperatura) AS MaxDiTemperatura
    FROM   dbo.Tabella
    GROUP BY CONVERT(Date,Data)
    
    --Pulizia
    DROP TABLE dbo.Tabella
    
    /* Risultato
    Giorno     MinDiTemperatura       MaxDiTemperatura
    ---------- ---------------------- ----------------------
    2015-12-05 5,15                   10,3
    2015-12-06 6,3                    12,1
    
    (Righe interessate: 2)
    
    */

    Ciao

    Giorgio Rancati


    domenica 6 dicembre 2015 20:44
    Moderatore
  • Grazie infinite Giorgio.

    Funziona proprio come volevo!

    domenica 6 dicembre 2015 22:31