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

Это для MySQL, но может быть более применимый оператор SQL. Мне не нужно, чтобы это было портативно.

У меня есть такая таблица:

| id | site | used | date |
| 1  | A    | 180  | 9/15 |
| 2  | A    | 110  | 9/14 |
| 3  | A    | 90   | 9/13 |
| 4  | B    | 200  | 9/15 |
| 5  | B    | 220  | 9/14 |
| 6  | B    | 270  | 9/13 |
| 7  | C    | 910  | 9/14 |
| 8  | C    | 930  | 9/13 |

Описание: данные собираются каждый день, но последний день захвата сайта C был 9/14.

Как получить набор результатов, который захватывает по одной строке для каждого сайта, с максимальным значением, возможным для даты для этого сайта?

Результаты будут:

| id | site | used | date |
| 1  | A    | 180  | 9/15 |
| 4  | B    | 200  | 9/15 |
| 7  | C    | 910  | 9/14 |

Ответы [ 2 ]

2 голосов
/ 15 сентября 2011
select t.*
from (
    select site, max(date) as MaxDate
    from MyTable
    group by site
) tm
inner join MyTable t on tm.site = t.site and tm.MaxDate = t.Date

Вы получите дубликаты строк, если существует более одной записи сайта с одной и той же датой.

0 голосов
/ 15 сентября 2011
SELECT * FROM (
   SELECT * FROM `test` ORDER BY date DESC
) AS t 
GROUP BY `site`
...