Ir para conteúdo
Leandro de Jesus

Order By com Group By e INNER JOIN

Recommended Posts

Olá amigos muito boa tarde.

Estou enfrentando uma situação inédita aqui pra mim.

 

Eu tenho a seguinte SQL

 

SELECT a.*,b.idUsuario, b.data_atualizado 
from px_cadastros a 
  INNER JOIN px_cadastros_votacao b ON a.id = b.idUsuario 
GROUP BY b.idUsuario  
ORDER By b.data_atualizado DESC

O problema ai que não order pela data_atualizada.

Se eu remover o GROUP BY ai fica ordenado.

Tentei com DISTINCT

 

SELECT DISTINCT b.idUsuario ,a.*,b.idUsuario, b.data_atualizado 
from px_cadastros a 
  INNER JOIN px_cadastros_votacao b ON a.id = b.idUsuario 
ORDER By b.data_atualizado DESC

Dá certo, porém vem os cadastros repetidos.

 

Alguém tem alguma luz para resolver isso?

 

Muito obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Deixe somente os campos não repetidos , tirei o "a.*,".

SELECT DISTINCT b.idUsuario ,b.idUsuario, b.data_atualizado
from px_cadastros a
  INNER JOIN px_cadastros_votacao b ON a.id = b.idUsuario
ORDER By b.data_atualizado DESC

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por Kr3w^
      Pessoal, bom dia
       
      Estou com um problema e quebrando a cabeça para resolver.
       
      Eu preciso filtrar informação de uma tabela e somar as quantidades do período informado e trazer a quantidade total do mês para esse produto. 
       
      Segue um exemplo de como eu queria que viesse.
       
       
      Ao filtrar o período do mês 01/01/2020 a 31/12/2020 ele deveria trazer para mim a seguinte informação.
       
      Item     -     MES    -     Quantidade
      PARAFUSO  - JANEIRO - 40
      PARAFUSO  - FEVEREIRO - 20
      PARAFUSO  - MARÇO - 30
      .....
      PARAFUSO  - DEZEMBRO- 10
       
      Dentro do período informado ele trás a quantidade total do mês, porém, essa quantidade eu faço a soma pelo SUM e como eu preciso trazer o mês falar qual o mes e quantidade, ele trás mais linhas do mesmo mês, isso porque, dentro do mês ele possui registros de diversas datas, e o group by quando vê as datas diferentes não agrupam e só agrupa o que for data igual.
       
      Como posso resolver isso? Alguém tem alguma ideia?
       
       
    • Por ramonjba
      Bom dia! Pessoal, estou muito precisando da ajuda dos Srs. Tenho uma tabela, onde a cada minuto, meu script insere dados referente a consulta SNMP de determinado equipamento. Tenho uma pagina, onde os dados que a consulta coletou diferente do dado atual, é mostrado na tabela. O que acontece é o seguinte, estou utilizando o GROUP BY para selecionar apenas os dados diferentes da coluna 'canalEquipamento', mas, o problema é que, se eu estiver com o Canal registrado na tabela em 5540, realizar a alteração para o 5500, e depois voltar para o 5540, minha consulta não retorna o dado duplicado. Não posso simplesmente mostrar todas as consultas na tabela, pois como eu disse, a inserção de dados na tabela é realizada a cada minuto, dessa forma, iria ter vários dados repetidos e uma consulta enorme. Então, o que eu preciso fazer, é que: a consulta retorne os dados , que o último não seja repetido, por exemplo: Tenho do registro 1 até 50, a coluna Canal está registrada em 5500, no registro 51 até o 500, o canal mudou para 5540, e do 501 até o 700, o canal voltou para o 5500. O que eu precisaria que a consulta retornasse, seria por exemplo:

      Consulta 1 - Canal 5500
      Consulta 51 - Canal 5540
      Consulta 501 - Canal 5500
       
      Segue a imagem do exemplo do problema atual, de como a query está retornando no momento (ela está listando apenas o primeiro registro do canal, se repetir o canal, ele não aparece mais).
      QUERY: SELECT ip_equipamento, canalEquipamento, lastSNMP FROM equipamentoSNMP WHERE idEquipamento='317' GROUP BY canalEquipamento ORDER BY idConsulta DESC
       

    • Por tamabenetti
      AJUDAAAA
      Pessoal eu preciso da quantidade total de itens diferentes vendidos por cliente para cada vendedor.
       
      Eu tenho o seguinte:
      Vendedor |                     CLIENTE                                  |  PRODUTO                                 |  data_VENDA
      JOAO          |                    MERCADO  SORRISO            |                   PRESUNTO              |  01/07/2019
      JOAO          |                   PADARIA SONHO                     |                    PRESUNTO             | 03/07/2019
      JOAO          |                    SUPERCENTER                       |                      PRESUNTO             | 05/07/2019
      JOAO          |                    SUPERCENTER                       |                      PRESUNTO             |  10/07/2019
      LUIZ          |                    CONFEITARIA A                         |                     AÇUCAR                   |  15/07/2019
       
      PRECISO DESSE RESULTADO:
      Vendedor | Total clientes vendidos | total produtos diferentes vendidos POR CLIENTE
      JOAO          |                  3                        |                    3 *
      LUIZ             |                 1                       |                      1
       
      *O total é 3 porque eu preciso considerar a venda do produto por cliente, e não somente por vendedor.
       
      Quando eu utilizo o group by ele considera apenas o total de produtos vendidos por VENDEDOR, 
      e não considera a venda para clientes diferentes.
      SELECT distinct vendedor, count(distinct cliente), count(distinct produto) 
      FROM FATO_VENDAS a
      GROUP BY vendedor
       
      Por favor me ajudem!!!
    • Por sadamkim
      Pessoal,  me deparei com um problema.
      Tenho uma Tabela, onde fica armazenada as transações dos clientes.
      Cada transação tem vários registros com o campo STATUS.
       
      Preciso fazer um MAX, para pegar a ultima transação por data, e assim saber qual foi o status da mesma.
      Mas ao utilizar o MAX e selecionar o campo STATUS ele me traz todos os registro, porque o mesmo não pode agrupar por status, por conter valores diferentes.
      É possível criar alguma forma de selecionar no meu caso a ultima transação por data (MAX) e trazer o campo status?
      Seja com alguma procedure, ou outra função do ORACLE.


    • Por pamf
      Prezados, boa noite!
       
      Me deparei com um problema aqui que acredito que seja bem simples para voces. Estou aqui precisando agrupar dados com a maior data de vendas para um cliente Numa coluna para todas as linhas do cliente (registro a registro das notas). Tambem preciso fazer algumas operacoes de total para disponibilizar um SCRIPT SQL sql para ser consumido por uma ferramenta analitica de BI e foi especificado exatamente como esta na planilha. Para facilitar criei os cenários. Tem os scripts de criacao da tabela e de insert e os resultados esperados nas colunas calculadas pelo sql. Espero que a documentação esteja boa para o caso de uso e que voces possam me ajudar. POde ser didatico para quem da aulas de PL SQL.
       
      Grato
       
      Att
      Paulo
       
      PS: como nao aceitou a planilha, escrevo abaixo:
       
      --SCRIPT DE CRIACAO TABELA ORACLE CREATE TABLE T_VENDAS (DATA_VENDA DATE, COD_CLI NUMBER (10), CLIENTE VARCHAR2(10), NUM_NF VARCHAR(10), ITEM VARCHAR2(20), QTDE NUMBER (10,2), VL_TOT_ITEM NUMBER (10,2), VL_UNIT NUMBER (10,2)); --INSERTS INSERT INTO T_VENDAS VALUES('05-Jan-2019',15,'JOAO','20','MESA',1,200,200); INSERT INTO T_VENDAS VALUES('05-Jan-2019',15,'JOAO','20','CADEIRA',4,240,60); INSERT INTO T_VENDAS VALUES('21-Jan-2019',15,'JOAO','66','BANCO',2,240,120); INSERT INTO T_VENDAS VALUES('08-Feb-2019',15,'JOAO','102','GELADEIRA',1,600,600); INSERT INTO T_VENDAS VALUES('07-Mar-2019',15,'JOAO','145','ARMARIO',1,450,450); INSERT INTO T_VENDAS VALUES('05-Jan-2019',20,'MARIA','28','SOFA',1,750,750); INSERT INTO T_VENDAS VALUES('05-Jan-2019',20,'MARIA','28','TAPETE',2,280,140); INSERT INTO T_VENDAS VALUES('21-Jan-2019',20,'MARIA','72','CORTINA',2,160,80); INSERT INTO T_VENDAS VALUES('08-Feb-2019',20,'MARIA','120','CAMA',1,400,400); INSERT INTO T_VENDAS VALUES('17-Feb-2019',20,'MARIA','151','COLCHAO',1,500,500);  
       
      CENARIOS (DADOS INSERIDOS NA TABELA T_VENDAS - COLUNAS DO EXCEL ABAIXO: B, C, D, E, F, G, H, I)
       

       
      COLUNAS CALCULADAS ESPERADAS NO SCRIPT SQL ALEM DAS COLUNAS JA EXISTENTES NA TABELA
       

       
      RESULTADO ESPERADO DO SCRIPT SQL
       

       
       
       
         
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.