Как получить максимальное значение из вывода SQL-запроса - PullRequest
0 голосов
/ 29 сентября 2011

У меня есть две таблицы: task_runs и integer_values.Я выполняю запрос, чтобы получить этот вывод:

task_name         start_time            value
acc_clock         2010-05-27              4
icc_opy           2010-05-28              5
icc_dtaf          2010-05-29              3
acc_clock         2010-05-25             34
icc_ruty          2010-05-23             33
icc_ruty          2010-05-22             45

Это мой вывод SQL-запроса, поступающего из двух разных таблиц.Обратите внимание, что в этом выводе task_name происходит дважды.Но я хочу, чтобы в выводе было только одно вхождение task_name, а его значение должно быть максимальным start_time, например:

task_name         start_time            value
icc_opy           2010-05-28              5
icc_dtaf          2010-05-29              3
acc_clock         2010-05-25             34
icc_ruty          2010-05-23             33

Мой запрос:

select t.task_name, max(t.start_time), i.value
from task_runs t, integer_values i
where i.run_id = t.id
and t.username = 'amit'
and t.start_time > '2010-05-20'
order by t.task_name
group by t.task_name

Почему это не работает?

Ответы [ 4 ]

1 голос
/ 29 сентября 2011
SELECT task_name, MAX(start_time) FROM your_table GROUP BY task_name;

Группировка по возьмет дубликаты и в этом случае сгруппирует их по имени задачи. И MAX примет самое высокое значение. SO: если существует больше задач с одним и тем же именем, отобразите его один раз и покажите только ту, которая имеет наибольшее время начала.

0 голосов
/ 29 сентября 2011
;WITH max_start AS
(
SELECT 
task_name
,start_time
,value
,row_number() OVER (PARTITION BY taskname ORDER BY start_time DESC) as row
FROM your_table
)
SELECT 
task_name
,start_time
,value
FROM max_start 
WHERE row = 1
0 голосов
/ 29 сентября 2011
SELECT * FROM yourTable y
JOIN 
 (select task_name, MAX(start_time) maxtime FROM yourTable GROUP BY task_name) highest
ON y.task_name = highest.task_name AND y.start_time = highest.start_time
0 голосов
/ 29 сентября 2011

Я думаю, вам нужно взглянуть на GROUP BY и MAX

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...