Eu tenho o seguinte:
SELECT * FROM (SELECT * FROM table ORDER BY id DESC) t GROUP BY pcid
SELECT * FROM (SELECT * FROM table ORDER BY timestamp DESC) t GROUP BY pcid
Não consigo fazer com que o GROUP BY esteja na ordem correta. Ele sempre puxa do valor mais baixo.
Estou faltando alguma sintaxe que é alheio a mim?
Depois de procurar as últimas horas para encontrar uma solução para esse problema, não consegui resolver. Esta pergunta foi feita porque não consegui encontrar a resposta.
Aqui está a minha estrutura de tabela:
mesa id, primário pcid CPU memphy memcom memvir timestamp
Eu tentei classificar por timestamp e id sem sorte.
Respostas:
0 para resposta № 1Esta consulta deve retornar as linhas necessárias:
select
t.*
from
table t INNER JOIN (select column, max(highest) m_highest
from table
grouo by column) tm
on t.column=tm.column and t.highest=tm.m_highest
A subconsulta retornará o máximo mais alto por coluna, depois você se juntará de volta à tabela original te retornará todas as linhas que tiverem maior = o máximo mais alto por coluna.
0 para resposta № 2
Você deve dar mais detalhes, mas pode ser algo assim:
SELECT column, highest, count(somecolumnname)
FROM table_name
GROUP BY column, highest
ORDER BY highest DESC