MySQL запрос с группировкой по и упорядочить по
Вопрос
У меня есть такая таблица:
.--------------------------------.
| Name | XX | Date |
.--------------------------------.
| N1 | 5 | 2009-05-01 |
| N1 | 10 | 2008-01-08 |
| N2 | 8 | 2009-02-02 |
.________________________________.
Мой результат должен быть таким:
.------------.
| Name | XX |
.------------.
| N1 | 5 |
| N2 | 8 |
.____________.
Мне просто нужны строки, сгруппированные по названию, но только самые новые. Мне не нужна строка с XX = 10 в этом примере, потому что дата 2009-05-01 > 2008-01-08. Р>
Я не знаю, как отсортировать по дате и сгруппировать ее: (
Решение
Для чего нужна группировка?
select Name, XX
from yourTable t1
where Date = (select MAX(Date)
from yourTable t2
where t1.Name = t2.Name)
Если вам нужно сложить XX за последний день, то:
select Name, SUM(XX)
from yourTable t1
where Date = (select MAX(Date)
from yourTable t2
where t1.Name = t2.Name)
group by Name
Другие советы
SELECT Name, XX FROM myTable GROUP BY Name ORDER BY Date DESC
Возможно, вам потребуется поместить кавычки вокруг поля даты
`Date`
Извините, но оба они не правы. Р>
Вы должны
SELECT Name, XX FROM t1 JOIN (SELECT Name, max(date) FROM t1 GROUP BY Name) subquery ON t1.Name = subquery.Name AND t1.Date = subquery.Date
Не связан с StackOverflow