Jump to content
willianmarques

sum dentro do select com inner join

Recommended Posts

Ola, desculpa se abri um topico errado, sou novo aqui mas sempre acompanho o forum de voces, 

 

sou novo na area de banco de dados entao desculpa se for grosseiro em entender algo, rs

-----------------------------------------------------------

eu estou com este select

 

SELECT  
    idOrcMatDet,
    idGrupo,
    idSubGrupo,
    omd.numeroOrcamento,
    orcmatdet_preco4lista 
FROM
    OrcMatDet omd INNER JOIN ORCCAB cab ON omd.numeroOrcamento = cab.numeroOrcamento
 where orccab_Cadastro BETWEEN '20-12-2017 00:00:00.000' and '20-01-2018 00:00:00.000'

 

 

que me deu este resultado 

 

idOrcMatDet    idGrupo    idSubGrupo    numeroOrcamento    orcmatdet_preco4lista
13899    5    07    EL310010    0,00
13900    5    04    EL310010    4115,21
13901    5    12    EL310010    4922,62
13902    5    12    EL310010    5013,93
13903    5    11    EL310010    548,44
13904    5    11    EL310010    645,20
13969    5    07    EL310011    0,00
13970    5    12    EL310011    3717,87
13971    5    12    EL310011    3915,09
13972    5    12    EL310011    3645,93
13973    5    12    EL310011    4077,69
13974    5    12    EL310011    685,26
13975    5    12    EL310011    3570,22
13976    5    12    EL310011    3365,33
13977    5    12    EL310011    3732,83

 

gostaria de somar os valores somento do 'idgrupo' 12 por exemplo alguem pode me ajudar

 

 

Share this post


Link to post
Share on other sites

ja descobri pessoal,

ficou assim o script

 

WITH Dados AS (

SELECT idOrcMatDet,
       idGrupo,
       idSubGrupo,
       omd.numeroOrcamento,
       orcmatdet_preco4lista,
       TotalPorGrupo = SUM(orcmatdet_preco4lista) OVER(PARTITION BY idGrupo)
  FROM OrcMatDet omd
 INNER JOIN ORCCAB cab
    ON omd.numeroOrcamento = cab.numeroOrcamento
 WHERE orccab_Cadastro BETWEEN '20-12-2017 00:00:00.000' AND '20-01-2018 00:00:00.000'
)

SELECT * FROM Dados R
WHERE idGrupo = 4

 

vlw

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By Giovanird
      Olá amigos!
      Tenha a seguinte estrutura no banco MySQL
      COD   |   PONTOX  |  PONTOY  |  ATLETAX       |  ATLETAY
      1         |   0               |  1               |  Maria              |  João
      2         |   2               |  0               |  João               |  Maria
      3         |   0               |  2               |  Maria              |  João
      4         |   7               |  5               |  Maria              |  João
      5         |   0               |  3               |  João               |  Maria
      6         |   2               |  1               |  João               |  Maria
      7         |   0               |  6               |  Maria              |  João
      8         |   4               |  0               |  João               |  Maria
       
      Preciso de ajuda para somar quantos pontos fez o atleta João nos últimos 5 torneios (COD 8, 7, 6, 5 e 4)  Há momento que o João jogou em X e outro momento em Y.
      Abaixo segue meu Select, onde a soma dos pontos deve ser 17.
       
      nomeatleta = "João"
      Set soma= banco.execute("SELECT sum(PONTOX ) AS somax,  sum(PONTOY ) AS somay FROM (select cod, pontox, pontoy, atletax, atletay  from torneios where (atletax like '"&nomeatleta&"' or atletay like '"&nomeatleta&"') order by cod desc limit 5) AS temp")
       
    • By marsolim
      galera tô tentando fazer uma classificação aqui junto com um sum e não to conseguindo. até o momento consigo gerar a tabela de desempenho assim
       
         $sql = "SELECT *,SUM(pontos_total) AS totais FROM desempenho INNER JOIN usuarios ON usuarios.id = desempenho.id_usuario GROUP BY id_usuario ORDER BY totais DESC";     if($res = mysqli_query($con, $sql)){         while($row = mysqli_fetch_assoc($res)){             echo $row["nome"] . " - " . $row["totais"] . "<br>";         }     }  
      ok isso me gera uma tabela como segue
       
      jean claude van damme - 152
      bruna marquezine - 149
      bruce willis - 131
      ...
       
      o que não to conseguindo é incluir um contagem pra saber em que posição a pessoa está por exemplo se a bruna marquezine logar no sistema deve aparecer pra ela
       
      Sua pontuação: 149
      Sua posição: 2
       
      to tentando incluir uma clausula pra contar os totais maiores ou iguais ao do usuário logado e assim a quantidade de registros que retornar é a posição da pessoa.
       
      detalhe pertinente: totais é uma soma de vários subtotais espalhados pela tabela em nome de cada usuario tipo
       
      nesse cenario temos como soma dos pontos totais
       
      1 - 8
      2 - 13
      3 - 3
      4 - 7
      5 - 2
       
      alguma ideia de como posso pegar a posição apenas alterando o sql?
    • By Rodymb
      Bom dia!
      Estou fazendo um select em uma tabela de cupom fiscal e preciso que me mostre o operador do caixa e o supervisor que liberou a venda, que no caso é convênio.
      A consulta que montei é a seguinte:
       
      select  c.m00ad as CUPOM,
              c.m00ac as PDV,
              c.m02ak as VALOR,
              p.descricao as FINALIZADORA,
              c.m02ah as OPERADOR,
              f.nome as NOME_OP,
              c.m02ao as SUPERVISOR,
              f.nome as NOME_SUP
      from zan_m02 c inner join tab_funcionario f
      on c.m02ao = f.cod_funcionario
      inner join tab_finalizadora p
      on c.m02ai = p.cod_finalizadora
      where c.m00af = to_date('09/03/20','dd/mm/yy')
      and c.m00za = 3
      and c.m00ac = 9
      and c.m00ad = 379678
      group by c.m00ad,c.m00ac,c.m02ak,p.descricao,c.m02ah,f.nome,c.m02ao;
       
      A consulta me retorna o seguinte resultado:

       
      Como podem ver, repetiu o mesmo nome (operador e supervisor), sendo que o código é diferente.
       
      Isso acontece por que na tabela de funcionário o campo NOME serve para operador e supervisor e o que diferencia se é supervisor ou operador temos mais duas outras tabelas. A estrutura é assim:
       
      tab_funcionario -> temos o campo cod_funcionario e nome (todos os funcionários cadastrados são armazenados nessa tabela)
      tab_perfil -> temos os campos cod_perfil e descricao (todos os perfis cadastrados são armazenados nessa tabela)
      tab_perfil_funcionario -> temos os campos cod_funcionario e cod_perfil (tabela que relaciona as tabelas tab_funcionario e tab_perfil)
       
      A única coisa que preciso é que apareça no NOME_OP o nome do operador e não o nome do supervisor igual está aparecendo.
       
    • By Luiz Henrique
      Olá pessoas,
       
      Preciso fazer uma consulta em 3 tabelas, mas quando insiro a 3ª na consulta já duplica resultados:
      Tabela ticket
      id,  id_cliente
       
      Tabela clientes
      id, nome
       
      Tabela servicos_ticket
      id, id_ticket, valor_ticket
       
      Aqui OK
      SELECT ticket.*, clientes.* FROM ticket JOIN clientes ON ticket.id_cliente = clientes.id Mas aqui duplica, porque um ticket pode ter vários serviços cadastrados.
      ticket.*, clientes.*, servico_ticket.* FROM ticket JOIN clientes ON ticket.id_cliente = clientes.id JOIN servico_ticket ON ticket.id = servico_ticket.id_ticket A listagem tem que ser apenas dos tickets cadastrados, tentei colocar DISTINCT ticket.* mas não adianta.
      o resultado deveria ser algo assim:
       
      12344 luiz 10.00
      12345 henrique 20.00
       
      mas se o ticket do luiz tiver 3 serviços cadastrados
       
      12344 luiz 10.00
      12344 luiz 10.00
      12344 luiz 10.00
      12345 henrique 20.00
       
      e deveria ser apenas 1, aí eu faria a soma dos valores
       
      12344 luiz 30.00
       
      Como elimino essa duplicação?
      Deu para entender?
      Obrigado.
    • By Luiz Henrique
      Olá pessoas,
       
      Preciso fazer uma consulta em 3 tabelas, mas quando insiro a 3ª na consulta já duplica resultados:
      Tabela ticket
      id,  id_cliente
       
      Tabela clientes
      id, nome
       
      Tabela servicos_ticket
      id, id_ticket, valor_ticket
       
      Aqui OK
      SELECT ticket.*, clientes.* FROM ticket JOIN clientes ON ticket.id_cliente = clientes.id Mas aqui duplica, porque um ticket pode ter vários serviços cadastrados.
      ticket.*, clientes.*, servico_ticket.* FROM ticket JOIN clientes ON ticket.id_cliente = clientes.id JOIN servico_ticket ON ticket.id = servico_ticket.id_ticket A listagem tem que ser apenas dos tickets cadastrados, tentei colocar DISTINCT tickets.* mas não adianta.
      o resultado deveria ser algo assim:
       
      12344 luiz 10.00
      12345 henrique 20.00
       
      mas se o ticket do luiz tiver 3 serviços cadastrados
       
      12344 luiz 10.00
      12344 luiz 10.00
      12344 luiz 10.00
      12345 henrique 20.00
       
      e deveria ser apenas 1, aí eu faria a soma dos valores
       
      12344 luiz 30.00
       
      Como elimino essa duplicação?
      Deu para entender?
      Obrigado.
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.