MySQL запрос с группировкой по и упорядочить по - PullRequest
2 голосов
/ 06 августа 2009

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

.--------------------------------.
| 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.

Я не знаю, как отсортировать по дате и сгруппировать ее: (

Ответы [ 3 ]

2 голосов
/ 06 августа 2009

Для чего нужна группировка?

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
0 голосов
/ 06 августа 2009

Извините, но эти 2 не правы.

Вы должны

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

0 голосов
/ 06 августа 2009
SELECT Name, XX FROM myTable GROUP BY Name ORDER BY Date DESC

Возможно, вам понадобится поставить кавычки вокруг поля даты

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