Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Como Ordernar um Group?


ReDNoS

Pergunta

6 respostass a esta questão

Posts Recomendados

  • 0
É order by mesmo:

SELECT MAX(DTH_SORTEIO)   FROM RESULTADO  WHERE NUM_PRODUTO IN (9329) 
 GROUP BY YEAR(DTH_SORTEIO), MONTH(DTH_SORTEIO)  
  ORDER BY YEAR(DTH_SORTEIO) , MONTH(DTH_SORTEIO)

Complementando o que o 'jothaz' falou no post anterior.

O ORDER BY em um GROUP BY só vale a pena se o atributo a ser ordenado estiver fora da ordenação própria do GROUP BY.

Isto porque o GROUP BY já vem ordenado pelas cláusulas que o compõem. Exemplo: O código no post anterior trará a ordenação por YEAR(DTH_SORTEIO), MONTH(DTH_SORTEIO) mesmo sem a cláusula ORDER BY. Porém, se você quizesse a ordenação por mes e ano ou por MAX(DTH_SORTEIO), então você deveria usar o ORDER BY.

Link para o comentário
Compartilhar em outros sites

  • 0

Mas o que eu quero é o seguinte:

Eu primeiramente quero pegar o valor mais alto do abnormalupdate.ScoreDeta de cada abnormalupdate.Id e depois agrupar por abnormalupdate.Id para que me mostre o ScoreDelta mais alto de cada Id.

Dessa forma, sem group, ele faz quase o que eu quero:

$result2 = $db->Execute("SELECT * FROM game, abnormalupdate where abnormalupdate.ID=game.id order by abnormalupdate.Id DESC, abnormalupdate.ScoreDelta DESC");
Ele organiza pelo Id DESC e depois pelo ScoreDelta DESC mostrando por primeiro o ScoreDetal mais alto de cada ID, porém, o problema é que ele vai mostar mais de um mesmo ID e é por isso que eu gostaria de agrupar por ID mostrando o seu ScoreDelta mais alto. Se eu fizer isso:
$result2 = $db->Execute("SELECT * FROM game, abnormalupdate where abnormalupdate.ID=game.id GROUP By abnormalupdate.Id order by abnormalupdate.Id DESC, abnormalupdate.ScoreDelta DESC");

Então ele primeiro irá agrupar pelo ID, depois irá ordenar pelo ID e depois pelo ScoreDelta e irá mostrar o primeiro ScoreDelta da tabela! E eu não quero mostrar o primeiro ScoreDelta da tabela mas sim o maior valor ScoreDetal da tabela!

Link para o comentário
Compartilhar em outros sites

  • 0

Oi, ReDNoS!

Conforme o que entendi do post anterior, sua solução seria como esta:

SELECT abnormalupdate.Id , MAX(abnormalupdate.ScoreDeta) AS maior_valor 
FROM abnormalupdate GROUP BY abnormalupdate.Id 
ORDER BY abnormalupdate.Id, maior_valor DESC;

Não há a necessidade de um JOIN. esta seria válida se houvesse algum atributo de "game" que necessitasse ser exibido.

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.


  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...