MySQL запрос с группировкой по и упорядочить по

StackOverflow https://stackoverflow.com/questions/1236003

  •  22-07-2019
  •  | 
  •  

Вопрос

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top