Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Помощь в составлении запроса. Минимум и максимум за день.  [new]
denermak
Member

Откуда:
Сообщений: 10
Имеется следующая объединенная таблица:

area_name place_name object_name class year month day hour value


нужно сделать таблицу:

year = @year_to_calc;
month = @month_to_calc;
day = @day_to_calc;
area_name place_name object_name class min_value min_value_hour max_value max_value_hour


Т.е. для заданного дня найти максимальное и минимальное значения за 24ч и их час.
11 янв 19, 12:00    [21782603]     Ответить | Цитировать Сообщить модератору
 Re: Помощь в составлении запроса. Минимум и максимум за день.  [new]
Kopelly
Member

Откуда: Красноярск
Сообщений: 252
Select min_vals.*,
max_value,
max_value_hour
From (
   Select top 1 with ties 
   area_name,place_name, object_name, class 
   value as min_value, 
   hour as min_value_hour
     From table 
   Where year = @year_to_calc and 
   month = @month_to_calc and
   day = @day_to_calc
   Order by Row_Number() over (Partition by area_name,place_name, object_name, class Order by Value
) min_vals
join 
(
   Select top 1 with ties 
   area_name,place_name, object_name, class 
   value as max_value, 
   hour as max_value_hour
     From table 
   Where year = @year_to_calc and 
   month = @month_to_calc and
   day = @day_to_calc
   Order by Row_Number() over (Partition by area_name,place_name, object_name, class Order by Value desc
) max_vals 
on min_vals.area_name = max_vals.area_name
and min_vals.place_name = max_vals.place_name
and min_vals.object_name = max_vals.object_name
and min_vals.class  = max_vals.class 
11 янв 19, 12:16    [21782630]     Ответить | Цитировать Сообщить модератору
 Re: Помощь в составлении запроса. Минимум и максимум за день.  [new]
denermak
Member

Откуда:
Сообщений: 10
Kopelly,

спасибо.
Попробовал набрать первую половину только с минимумом - пишет
неправильный синтаксис около конструкции "min_vals"
11 янв 19, 12:38    [21782674]     Ответить | Цитировать Сообщить модератору
 Re: Помощь в составлении запроса. Минимум и максимум за день.  [new]
invm
Member

Откуда: Москва
Сообщений: 8302
with s as
(
 select
  area_name, place_name, object_name, class, year, month, day, hour, value,
  row_number() over (partition by area_name, place_name, object_name, class, year, month, day order by value) as rn,
  first_value(hour) over (partition by area_name, place_name, object_name, class, year, month, day order by value desc) as max_hour,
  first_value(value) over (partition by area_name, place_name, object_name, class, year, month, day order by value desc) as max_value
 from
  [Имеется следующая объединенная таблица]
)
select
 area_name, place_name, object_name, class, year, month, day,
 hour as min_hour, value as min_value,
 max_hour, max_value
from
 s
where
 rn = 1;
11 янв 19, 12:43    [21782684]     Ответить | Цитировать Сообщить модератору
 Re: Помощь в составлении запроса. Минимум и максимум за день.  [new]
denermak
Member

Откуда:
Сообщений: 10
Kopelly,
а, скобки закрывающей не хватало.
11 янв 19, 12:45    [21782689]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить