Подтвердить что ты не робот

SQL: выберите самую последнюю дату для каждой категории

Я извлекаю данные из базы данных, а одна из таблиц содержит два столбца, которые вместе идентифицируют местоположение и другой столбец, содержащий дату каждого раза, когда он обслуживается. Можно ли написать SQL-запрос таким образом, что я получаю самое последнее время, когда каждое место обслуживалось?

Итак, если мои исходные данные выглядят так:

category_a  category_b  date
       1           a     1/1/01
       1           a     2/2/02
       1           b     1/2/01
       1           b     2/3/02
       2           a     1/3/01
       2           a     2/4/02
       2           b     1/4/01
       2           b     2/5/02

тогда запрос вернет это:

category_a  category_b  date
       1           a     2/2/02
       1           b     2/3/02
       2           a     2/4/02
       2           b     2/5/02

Это было бы легко сделать, если бы база данных была создана таким образом, что комбинации категорий были сохранены в отдельной таблице. Однако я не контролирую эту базу данных, поэтому я не могу вносить в нее изменения.

4b9b3361

Ответ 1

SELECT
    category_a,
    category_b,
    MAX(date)
FROM
    Some_Unnamed_Table
GROUP BY
    category_a,
    category_b
ORDER BY
    category_a,
    category_b

Я, конечно, не против помогать людям, когда могу, или я бы не был на этом сайте, но действительно ли вы искали ответ для этого до публикации?

Ответ 2

Это простая "группа", использующая тот факт, что "последней" датой является "наивысшая оценка" или max(), дата

select category_a, category_b, max(date)
from mytable
group by category_a, category_b
order by category_a, category_b -- The ORDER BY is optional, but the example data suggests it needed

Ответ 3

выберите category_a, category_b, max (дата) из группы tbl по категориям_a, category_b;

Ответ 4

Try

select category_a, category_b, max(date) as last_update from table group by category_a, category_b