mysql consulta com GROUP BY e por ordem
Pergunta
Eu tenho uma tabela como esta:
.--------------------------------.
| Name | XX | Date |
.--------------------------------.
| N1 | 5 | 2009-05-01 |
| N1 | 10 | 2008-01-08 |
| N2 | 8 | 2009-02-02 |
.________________________________.
Meu resultado deve ser esta:
.------------.
| Name | XX |
.------------.
| N1 | 5 |
| N2 | 8 |
.____________.
Eu só quero as linhas, agrupadas pelo nome, mas apenas os mais recentes. Eu não quero a linha com XX = 10 neste exemplo porque a data 2009-05-01> 2008-01-08.
Eu não sei como classificar por data e grupo que: (
Solução
O que você quer que o agrupamento para?
select Name, XX
from yourTable t1
where Date = (select MAX(Date)
from yourTable t2
where t1.Name = t2.Name)
Se você precisa para resumir XX para o último dia, então:
select Name, SUM(XX)
from yourTable t1
where Date = (select MAX(Date)
from yourTable t2
where t1.Name = t2.Name)
group by Name
Outras dicas
SELECT Name, XX FROM myTable GROUP BY Name ORDER BY Date DESC
Você pode precisar colocar aspas em torno de seu campo de data ??p>
`Date`
Desculpe, mas estes 2 estão ambos errados.
Você deve
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
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow