sql >> Database >  >> RDS >> Oracle

Hoe gebruik je verschillende en som beide samen in orakel?

Ik zou heel voorzichtig zijn met een datastructuur als deze. Controleer eerst of alle id s hebben precies één prijs:

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

Ik denk dat de veiligste methode is om een ​​bepaalde prijs te extraheren voor elke id (zeg het maximum) en doe dan de aggregatie:

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

Ga vervolgens uw gegevens repareren, zodat u geen herhaalde additieve dimensie krijgt. Er zou een tabel moeten zijn met één rij per ID en prijs (of misschien met duplicaten maar gecontroleerd door ingangs- en einddatums).

De gegevens zijn in de war; je moet er niet vanuit gaan dat de prijs in alle rijen hetzelfde is voor een bepaalde id. U moet dat elke keer dat u de velden gebruikt controleren, totdat u de gegevens corrigeert.



  1. Anonimiseer uw abonnementsgegevens in Plan Explorer

  2. Unicode-normalisatie in PostgreSQL 13

  3. SQL Server - In-clausule met een gedeclareerde variabele

  4. Voeg booleaanse waarden samen tot waar als een van de bronkolommen waar is