Multiplicação em Group By dentro de uma view

Dúvidas, dicas e truques de SQL, Select, Update, Delete, cláusulas, operações com joins, Funções em SQLs, etc
jasonsv
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 4
Registrado em: Qui, 02 Ago 2012 11:40 am

Bom dia,

Tenho uma "View" que extrai dados de uma tabela e agrupa de acordo com a "Categoria" e "Produto".

A Tabela contem as informações:

Selecionar tudo

CATEGORIA PRODUTO QTDE
1 A 5
2 B 3
3 C 1 
1 A 2
2 B 1

A view está assim:

Selecionar tudo

SELECT CATEGORIA,
PRODUTO,
SUM(QTDE) AS PRODUCAO,
FROM PRODUZIDOS
GROUP BY
CATEGORIA,
PRODUTO
Quanto executo gera os seguintes dados:

Selecionar tudo

CATEGORIA PRODUTO QTDE
1 A 7
2 B 4
3 C 1 

Acontece que em vez de somar a "Qtde" preciso que seja multiplicado os valores, ou seja: Multiplicar linhas de acordo com o agrupamento. Isto é possível dentro de uma view?

Obrigado.
DanielNN
Moderador
Moderador
Mensagens: 641
Registrado em: Seg, 03 Set 2007 3:26 pm
Localização: Fortaleza - CE
att,

Daniel N.N.

Multiplicar que valores???
você diz a soma da multiplicação "qtde * preço" ?
jasonsv
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 4
Registrado em: Qui, 02 Ago 2012 11:40 am

Em vez de somar na linha:

Selecionar tudo

SUM(QTDE) AS PRODUCAO,
Preciso que ele multiplique no agrupamento, tipo são N linhas de um mesmo Produto, preciso que multiplique a Qtde de um por outro.
Ex.: (1 * 3 * 4 = 12) e não como o SUM faz ( 1 + 3 + 4 = 8).

Obrigado.
DanielNN
Moderador
Moderador
Mensagens: 641
Registrado em: Seg, 03 Set 2007 3:26 pm
Localização: Fortaleza - CE
att,

Daniel N.N.

Entendi. Você queria uma função MULT() no lugar da SUM().
Acredito que isto pode ser resolvido com:

Selecionar tudo

exp(sum(ln(QTDE)))
Somar os logaritimos e elevar a "e".
jasonsv
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 4
Registrado em: Qui, 02 Ago 2012 11:40 am

Isto mesmo Noctifero, executei a função que passou, porém aparece erro:

Selecionar tudo

ORA-01428: O argumento '0' está fora da faixa válida.
O que pode ser?

Obrigado.
DanielNN
Moderador
Moderador
Mensagens: 641
Registrado em: Seg, 03 Set 2007 3:26 pm
Localização: Fortaleza - CE
att,

Daniel N.N.

Não existe logarítmo de 0.
Teria que retirar os zerados do seu select.
jasonsv
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 4
Registrado em: Qui, 02 Ago 2012 11:40 am

Resolvido, segue:

Selecionar tudo

SELECT CATEGORIA,
     PRODUTO,
    exp(sum(ln(QTDE))),
FROM PRODUZIDOS
WHERE QTDE  > 0
GROUP BY
     CATEGORIA,
     PRODUTO
Muito obrigado pela ajuda, me resolveu um problemão, abraço.
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 14 visitantes