@M1sty1
Занимаюсь версткой

Как вывести максимальную температуру за день?

Имеется такая таблица, нужно вывести макс. температуру за день, но получается почему-то всё равно все даты.
Нужно вывести в формаге ГГГГ-ММ-ДД Т Часы
create table T (dt datetime, t float, h time)

select FORMAT(dt, 'yyyy-dd') as dt, max(t) as t, FORMAT(dt,'hh:mm') as h
from T
group by dt
go

Результат данного кода такой:
6283a21bd59f0387647054.png
  • Вопрос задан
  • 126 просмотров
Решения вопроса 2
rozhnev
@rozhnev
Fullstack programmer, DBA, медленно, дорого
select FORMAT(dt, 'yyyy-MM-dd') as d, max(t) as t
from T
group by FORMAT(dt, 'yyyy-MM-dd');


MSSQL test online

select max_t.*, FORMAT(T.dt, 'HH:mm') hour
from ( 
  select FORMAT(dt, 'yyyy-MM-dd') as date, max(t) as max_t
  from T
  group by FORMAT(dt, 'yyyy-MM-dd')
) max_t
join T on FORMAT(T.dt, 'yyyy-MM-dd') = max_t.date and  T.t = max_t.max_t;


https://sqlize.online/sql/mssql2019/95f035c5071d91...
Ответ написан
Комментировать
tsklab
@tsklab Куратор тега SQL Server
Здесь отвечаю на вопросы.
CREATE TABLE T (dt DATETIME, t FLOAT)
INSERT T VALUES ( '20060706 00:10', 24.0),
( '20060706 10:00', 25.0),
( '20060706 07:00', 21.0),
( '20060707 01:10', 7.0)

SELECT CONVERT(VARCHAR, dt, 104) AS [Дата], 
       T.t AS [Температура], 
       LEFT(CONVERT(VARCHAR, dt, 108),7) AS [Время]
  FROM T
    INNER JOIN ( SELECT CONVERT(VARCHAR, dt, 112) AS D, MAX(t) AS T
                   FROM T
                   GROUP BY CONVERT(VARCHAR, dt, 112)) AS MT
       ON MT.D = CONVERT(VARCHAR, T.dt, 112) AND MT.T = T.t
  ORDER BY dt
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы