2015-09-17 3 views
0

Ищете помощь по этой проблеме.Выбор отдельных строк, которые имеют максимальное значение определенного столбца

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

Как я могу запросить это?

+1

Возможный дубликат [Извлечь строку, которая имеет максимальное значение для столбца] (http://stackoverflow.com/questions/121387/fetch-the-row-which-has-the-max-value-for- a-column) –

ответ

0

Что-то вроде:

select distinct driver 
from mytable 
where report_date = (select max(report_date) from mytable); 
+0

yep i закончил использовать что-то вроде этого. забыл проверить здесь, после того, как сам решил. –

1

Это позволит получить строку (или строки) для каждого драйвера, которые имеют самую последнюю дату отчета для каждого водителя.

SELECT * 
FROM (
    SELECT di.*, 
     DENSE_RANK() OVER (PARTITION BY driver ORDER BY report_date DESC) AS rnk 
    FROM driver_information di 
) 
WHERE rnk = 1; 

Если вы хотите только одну строку для каждого драйвера (а не все строки для каждого драйвера, которые имеют самую позднюю дату), а затем изменить DENSE_RANK к ROW_NUMBER.

Если вам нужны только те строки, которые находятся на последней дате, тогда вы можете удалить пункт PARTITION BY driver.

Смежные вопросы