Oracle
 sql >> Database >  >> RDS >> Oracle

Come usare distinti e sommare entrambi insieme in Oracle?

Sarei molto attento con una struttura dati come questa. Per prima cosa, controlla che tutti gli id s hanno esattamente un prezzo:

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

Penso che il metodo più sicuro sia estrarre un prezzo particolare per ogni id (diciamo il massimo) e quindi esegui l'aggregazione:

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

Quindi, vai a correggere i tuoi dati in modo da non avere una dimensione additiva ripetuta. Dovrebbe esserci una tabella con una riga per ID e prezzo (o forse con duplicati ma controllata da date di validità e di fine).

I dati sono incasinati; non dovresti presumere che il prezzo sia lo stesso su tutte le righe per un determinato ID. È necessario verificarlo ogni volta che si utilizzano i campi, fino a quando non si correggono i dati.