select sum + GROUP BY

Oracle

02/01/2015

Olá. Estou com dificuldades em fazer um select com Group by.
Preciso selecionar todas as vendas de um determinado período.
Por isso eu somo os campos qt e punit, e agrupo por codprod.
Mas no resultado traz todas as vendas do produto e nao agrupado.
Alguém pode me ajudar o que tem de errado nesse select.
Desde já agradeço
Segue meu select:

SELECT
a.CODPROD AS "Cód. Prod.",
a.DESCRICAO AS "Desc. Prod.",
b.CUSTOFIN AS "C. Infor.",
b.QTESTGER AS "Estq.",
a.QTUNITCX AS "Quantidade Embalagem",
(C.PUNIT * C.QT) AS "Venda Liq",
Sum(C.QT) AS "Qtde Liq.",
d.CODCOMPRADOR,
e.NOME
FROM
pcprodut a LEFT JOIN
pcest b ON a.CODPROD = b.CODPROD LEFT JOIN
pcmov C ON C.CODPROD = b.CODPROD LEFT JOIN
pcfornec d ON a.CODFORNEC = d.CODFORNEC LEFT JOIN
pcempr e ON d.CODCOMPRADOR = e.MATRICULA
WHERE
b.CODFILIAL = 51
AND C.CODUSUR <> '998'
AND C.CODDEVOL IS NULL
AND C.DTMOV BETWEEN '20-dec-2014' AND '20-dec-2014'
AND C.CODOPER LIKE '%S%'
GROUP BY
a.codprod, a.DESCRICAO, b.CUSTOFIN, b.QTESTGER, a.QTUNITCX, d.CODCOMPRADOR, e.NOME, C.QT, C.PUNIT
ORDER BY
a.CODPROD

Resultado do select:
1 30 PAP.HIG PALOMA C/04 FL.SP 30MT PERFUM 1,249563 7056 16 24,8592 16 23008 SERGIO HAMILTON DA SILVA
2 30 PAP.HIG PALOMA C/04 FL.SP 30MT PERFUM 1,249563 7056 16 24,8608 48 23008 SERGIO HAMILTON DA SILVA
3 30 PAP.HIG PALOMA C/04 FL.SP 30MT PERFUM 1,249563 7056 16 49,7216 96 23008 SERGIO HAMILTON DA SILVA
4 30 PAP.HIG PALOMA C/04 FL.SP 30MT PERFUM 1,249563 7056 16 74,5824 48 23008 SERGIO HAMILTON DA SILVA
5 30 PAP.HIG PALOMA C/04 FL.SP 30MT PERFUM 1,249563 7056 16 75,36 48 23008 SERGIO HAMILTON DA SILVA
6 30 PAP.HIG PALOMA C/04 FL.SP 30MT PERFUM 1,249563 7056 16 124,304 160 23008 SERGIO HAMILTON DA SILVA
7 40 PAP.HIG PALOMA C/04 FL.SP 30MT NEUTRO 1,250225 28657 16 20,014224 32 23008 SERGIO HAMILTON DA SILVA
8 40 PAP.HIG PALOMA C/04 FL.SP 30MT NEUTRO 1,250225 28657 16 24,8592 16 23008 SERGIO HAMILTON DA SILVA
9 40 PAP.HIG PALOMA C/04 FL.SP 30MT NEUTRO 1,250225 28657 16 24,8608 112 23008 SERGIO HAMILTON DA SILVA
10 40 PAP.HIG PALOMA C/04 FL.SP 30MT NEUTRO 1,250225 28657 16 25,1104 32 23008 SERGIO HAMILTON DA SILVA
11 40 PAP.HIG PALOMA C/04 FL.SP 30MT NEUTRO 1,250225 28657 16 40,028448 32 23008 SERGIO HAMILTON DA SILVA
12 40 PAP.HIG PALOMA C/04 FL.SP 30MT NEUTRO 1,250225 28657 16 49,7216 64 23008 SERGIO HAMILTON DA SILVA
13 40 PAP.HIG PALOMA C/04 FL.SP 30MT NEUTRO 1,250225 28657 16 50,2144 32 23008 SERGIO HAMILTON DA SILVA
14 40 PAP.HIG PALOMA C/04 FL.SP 30MT NEUTRO 1,250225 28657 16 74,5824 96 23008 SERGIO HAMILTON DA SILVA
15 40 PAP.HIG PALOMA C/04 FL.SP 30MT NEUTRO 1,250225 28657 16 100,07112 80 23008 SERGIO HAMILTON DA SILVA
16 40 PAP.HIG PALOMA C/04 FL.SP 30MT NEUTRO 1,250225 28657 16 124,304 320 23008 SERGIO HAMILTON DA SILVA
17 40 PAP.HIG PALOMA C/04 FL.SP 30MT NEUTRO 1,250225 28657 16 125,552 80 23008 SERGIO HAMILTON DA SILVA
18 40 PAP.HIG PALOMA C/04 FL.SP 30MT NEUTRO 1,250225 28657 16 174,0256 112 23008 SERGIO HAMILTON DA SILVA
19 40 PAP.HIG PALOMA C/04 FL.SP 30MT NEUTRO 1,250225 28657 16 248,608 480 23008 SERGIO HAMILTON DA SILVA
20 50 PAP.HIG PALOMA C/04 FL.SP 30MT CAMOMILA 1,252792 2736 16 24,8592 16 23008 SERGIO HAMILTON DA SILVA
21 50 PAP.HIG PALOMA C/04 FL.SP 30MT CAMOMILA 1,252792 2736 16 24,8608 16 23008 SERGIO HAMILTON DA SILVA
22 50 PAP.HIG PALOMA C/04 FL.SP 30MT CAMOMILA 1,252792 2736 16 74,5824 96 23008 SERGIO HAMILTON DA SILVA
23 50 PAP.HIG PALOMA C/04 FL.SP 30MT CAMOMILA 1,252792 2736 16 124,304 80 23008 SERGIO HAMILTON DA SILVA
24 80 PAP.HIG PALOMA C/08 FL.SP 30MT NEUTRO 2,519492 1800 8 20,155936 24 23008 SERGIO HAMILTON DA SILVA
25 80 PAP.HIG PALOMA C/08 FL.SP 30MT NEUTRO 2,519492 1800 8 24,86 16 23008 SERGIO HAMILTON DA SILVA
26 80 PAP.HIG PALOMA C/08 FL.SP 30MT NEUTRO 2,519492 1800 8 25,1104 24 23008 SERGIO HAMILTON DA SILVA
27 80 PAP.HIG PALOMA C/08 FL.SP 30MT NEUTRO 2,519492 1800 8 49,72 16 23008 SERGIO HAMILTON DA SILVA
28 80 PAP.HIG PALOMA C/08 FL.SP 30MT NEUTRO 2,519492 1800 8 60,467808 24 23008 SERGIO HAMILTON DA SILVA
29 80 PAP.HIG PALOMA C/08 FL.SP 30MT NEUTRO 2,519492 1800 8 74,58 24 23008 SERGIO HAMILTON DA SILVA
30 80 PAP.HIG PALOMA C/08 FL.SP 30MT NEUTRO 2,519492 1800 8 75,324 24 23008 SERGIO HAMILTON DA SILVA
31 80 PAP.HIG PALOMA C/08 FL.SP 30MT NEUTRO 2,519492 1800 8 99,44 32 23008 SERGIO HAMILTON DA SILVA
32 80 PAP.HIG PALOMA C/08 FL.SP 30MT NEUTRO 2,519492 1800 8 124,3 120 23008 SERGIO HAMILTON DA SILVA
33 80 PAP.HIG PALOMA C/08 FL.SP 30MT NEUTRO 2,519492 1800 8 248,6 160 23008 SERGIO HAMILTON DA SILVA
34 80 PAP.HIG PALOMA C/08 FL.SP 30MT NEUTRO 2,519492 1800 8 403,11872 160 23008 SERGIO HAMILTON DA SILVA
35 80 PAP.HIG PALOMA C/08 FL.SP 30MT NEUTRO 2,519492 1800 8 502,208 160 23008 SERGIO HAMILTON DA SILVA
36 100 AGUA SANITARIA Q BOA 1LT 1,544168 29003 12 21,9 72 8028 ATILA ALEX DA SILVA MARIANO
37 100 AGUA SANITARIA Q BOA 1LT 1,544168 29003 12 37,060032 24 8028 ATILA ALEX DA SILVA MARIANO
38 100 AGUA SANITARIA Q BOA 1LT 1,544168 29003 12 43,8 336 8028 ATILA ALEX DA SILVA MARIANO
39 100 AGUA SANITARIA Q BOA 1LT 1,544168 29003 12 44,2392 24 8028 ATILA ALEX DA SILVA MARIANO
40 100 AGUA SANITARIA Q BOA 1LT 1,544168 29003 12 65,7 72 8028 ATILA ALEX DA SILVA MARIANO
41 100 AGUA SANITARIA Q BOA 1LT 1,544168 29003 12 87,6 48 8028 ATILA ALEX DA SILVA MARIANO
42 100 AGUA SANITARIA Q BOA 1LT 1,544168 29003 12 108,402 120 8028 ATILA ALEX DA SILVA MARIANO
43 100 AGUA SANITARIA Q BOA 1LT 1,544168 29003 12 109,5 180 8028 ATILA ALEX DA SILVA MARIANO
44 100 AGUA SANITARIA Q BOA 1LT 1,544168 29003 12 131,4 72 8028 ATILA ALEX DA SILVA MARIANO
45 100 AGUA SANITARIA Q BOA 1LT 1,544168 29003 12 216,804 120 8028 ATILA ALEX DA SILVA MARIANO
46 100 AGUA SANITARIA Q BOA 1LT 1,544168 29003 12 219 240 8028 ATILA ALEX DA SILVA MARIANO
47 100 AGUA SANITARIA Q BOA 1LT 1,544168 29003 12 219,996 120 8028 ATILA ALEX DA SILVA MARIANO
48 100 AGUA SANITARIA Q BOA 1LT 1,544168 29003 12 657 360 8028 ATILA ALEX DA SILVA MARIANO
49 160 ERVILHA QUERO 200GR LT 0,811458 16375 24 19,474992 96 8028 ATILA ALEX DA SILVA MARIANO
50 160 ERVILHA QUERO 200GR LT 0,811458 16375 24 22,896 48 8028 ATILA ALEX DA SILVA MARIANO
51 160 ERVILHA QUERO 200GR LT 0,811458 16375 24 22,9008 240 8028 ATILA ALEX DA SILVA MARIANO
52 160 ERVILHA QUERO 200GR LT 0,811458 16375 24 23,1192 72 8028 ATILA ALEX DA SILVA MARIANO
53 160 ERVILHA QUERO 200GR LT 0,811458 16375 24 23,124 24 8028 ATILA ALEX DA SILVA MARIANO
54 160 ERVILHA QUERO 200GR LT 0,811458 16375 24 45,8016 432 8028 ATILA ALEX DA SILVA MARIANO
55 160 ERVILHA QUERO 200GR LT 0,811458 16375 24 68,7024 288 8028 ATILA ALEX DA SILVA MARIANO
56 160 ERVILHA QUERO 200GR LT 0,811458 16375 24 77,899968 96 8028 ATILA ALEX DA SILVA MARIANO

Vejam que retorna varias vezes o mesmo produto, eu preciso que essas informações sejam agrupadas!

Obrigado.
Anderson

Anderson

Curtidas 0

Respostas

Alex Lekao

Alex Lekao

02/01/2015

Ola Anderson, boa tarde!!!

Rapaz vc esta agrupando coisas de mais.

Experimente deixar apenas o essencial no agrupamento.

Vc esta usando isso no agrupamento.

a.codprod, a.DESCRICAO, b.CUSTOFIN, b.QTESTGER, a.QTUNITCX, d.CODCOMPRADOR, e.NOME, C.QT, C.PUNIT


se vc quer que apresente tudo agrupado apenas pelo produto e tal, para comecar poderia tirar isso e ver o resultado.

C.QT, C.PUNIT


Espero ter ajuado.

Abraco.
GOSTEI 0
Marisiana Battistella

Marisiana Battistella

02/01/2015

Não está agrupando pois você incluiu os campos C.QT, C.PUNIT que devem ser totalizados no agrupamento...
GOSTEI 0
Lourival Queiroz

Lourival Queiroz

02/01/2015

Para obter um "group by" de vendas a clientes observa as regras de junção e de somatório:


vendas:  d.CODCOMPRADOR, a.CODPROD, Sum(C.QT), sum(C.PUNIT * C.QT).

Produto: a.DESCRICAO.

Cliente: e.NOME.

Estoque: b.QTESTGER, a.QTUNITCX.

Financeiro: b.CUSTOFIN .



Utilizando essa regra ficaria mais ou menos assim (Observe que utilizo somente os nomes dos
campos as tabelas vc pode substituir).


-- Vendas com Dados Informativos
select v.Cli, c.Nome,    -- cliente
       v.Item, b.Nome, b.QtCaixa,  -- Produto
       e.QtEstoque,      -- Estoque
       f.CustoFin,         -- Financeiro
      v.Qtde, v.VlTot     -- Vendas
  from (select a.CODCOMPRADOR  Cli,
               a.CODPROD       Item,
               Sum(a.QT)         Qtde,
               sum(a.PUNIT * a.QT)  VlTot
          from vendas a
         where <Condição para selecionar as vendas>
         group by a.CODCOMPRADOR, a.CODPROD) V,        -- Vendas
       produto b,
       cliente c,
       Estoque e,
       Financeiro f
 where v.cli = c.cli
   and v.item = b.item
   and v.item = e.item
   and v.item = f.item



Como ver separei as funções das tabelas e seus respectivos valores
tornando com isso mais fácil de compreender o funcionamento do
group by.
GOSTEI 0
Marisiana Battistella

Marisiana Battistella

02/01/2015

Anderson, analisei teu SQL e acho que não está totalizando os valores porque você não estava totalizando os resultados de (C.PUNIT * C.QT) AS "Venda Liq"
Inclui a cláusula SUM e removi os campos C.QT, C.PUNIT do agrupamento...
SELECT a.CODPROD AS "Cód. Prod.",
	a.DESCRICAO AS "Desc. Prod.",
	b.CUSTOFIN AS "C. Infor.", 
	b.QTESTGER AS "Estq.",
	a.QTUNITCX AS "Quantidade Embalagem",
	SUM(C.PUNIT * C.QT) AS "Venda Liq",
	SUM(C.QT) AS "Qtde Liq.", 
	d.CODCOMPRADOR,
	e.NOME
FROM pcprodut a
LEFT JOIN pcest b
ON a.CODPROD = b.CODPROD
LEFT JOIN pcmov C
ON C.CODPROD = b.CODPROD
LEFT JOIN pcfornec d
ON a.CODFORNEC = d.CODFORNEC
LEFT JOIN pcempr e
ON d.CODCOMPRADOR = e.MATRICULA
WHERE b.CODFILIAL = 51
AND C.CODUSUR <> '998'
AND C.CODDEVOL IS NULL
AND C.DTMOV BETWEEN '20-dec-2014' AND '20-dec-2014'
AND C.CODOPER LIKE '%S%'
GROUP BY a.codprod,
         a.DESCRICAO,
         b.CUSTOFIN,
         b.QTESTGER,
         a.QTUNITCX,
         d.CODCOMPRADOR,
         e.NOME
ORDER BY a.CODPROD 

Testa para ver se é isso mesmo....
GOSTEI 0
Marisiana Battistella

Marisiana Battistella

02/01/2015

Conseguiu resolver Anderson?
GOSTEI 0
POSTAR