Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Como usar distinct e sum ambos juntos no oracle?


Eu teria muito cuidado com uma estrutura de dados como essa. Primeiro, verifique se todos os id s têm exatamente um preço:
select id
from table t
group by id
having count(distinct price) > 1;

Acho que o método mais seguro é extrair um preço específico para cada id (diga o máximo) e depois faça a agregação:
select sum(price)
from (select id, max(price) as price
      from table t
      group by id
     ) t;

Em seguida, corrija seus dados para não ter uma dimensão aditiva repetida. Deve haver uma tabela com uma linha por id e preço (ou talvez com duplicatas, mas controlada por datas efetivas e de término).

Os dados estão confusos; você não deve assumir que o preço é o mesmo em todas as linhas para um determinado id. Você precisa verificar isso toda vez que usar os campos, até corrigir os dados.