Oracle
 sql >> Base de données >  >> RDS >> Oracle

Comment utiliser distinct et additionner les deux ensemble dans Oracle?

Je serais très prudent avec une structure de données comme celle-ci. Tout d'abord, vérifiez que tous les id s ont exactement un prix :

select id
from table t
group by id
having count(distinct price) > 1;

Je pense que la méthode la plus sûre est d'extraire un prix particulier pour chaque id (dites le maximum) puis procédez à l'agrégation :

select sum(price)
from (select id, max(price) as price
      from table t
      group by id
     ) t;

Ensuite, corrigez vos données afin de ne pas avoir de dimension additive répétée. Il devrait y avoir un tableau avec une ligne par identifiant et prix (ou peut-être avec des doublons mais contrôlés par des dates d'effet et de fin).

Les données sont foirées; vous ne devez pas supposer que le prix est le même sur toutes les lignes pour un identifiant donné. Vous devez vérifier cela chaque fois que vous utilisez les champs, jusqu'à ce que vous corrigiez les données.