У меня есть таблица, которая выглядит так:

 DATE       | HOSTNAME | MY_VALUE
 -----------+----------+----------
 2015-08-10 | host01   | 1
 2015-08-10 | host02   | 3
 2015-08-10 | host03   | 4
 2015-08-11 | host01   | 7
 2015-08-12 | host02   | 13 

Я хочу получить сумму последнего MY_VALUE каждого отдельного hostname по самой последней дате. Выход должен быть « 24 » (4+7+13).

SELECT sum(MY_VALUE) 
FROM my_table  

2 ответа2

0

Я думаю, что вы можете использовать такой запрос:

SELECT SUM(My_Value)
FROM Table1 t
WHERE t.`Date` = (
  SELECT Max(ti.`Date`)
  FROM Table1 ti
  WHERE t.`HostName` = ti.`HostName`);

[SQL Fiddle Demo]

0

Когда вы говорите самую последнюю дату, это означает, что вам нужна только одна запись Hostname. Вы можете пойти с аналитической функцией номера строки.

select sum(myvalue),hostname 
select hostname,date,myvalue,row_number() over (partition by hostname order by date) as n 
from table ) 
where n=1

Если все еще вы не получите ответ. Не могли бы вы объяснить ваши требования

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .