Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Wie verwendet man Distinct und summiert beide zusammen in Oracle?

Ich wäre sehr vorsichtig mit einer Datenstruktur wie dieser. Überprüfen Sie zuerst, ob alle id s haben genau einen Preis:

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

Ich denke, die sicherste Methode ist, einen bestimmten Preis für jede id zu extrahieren (sagen Sie das Maximum) und führen Sie dann die Aggregation durch:

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

Korrigieren Sie dann Ihre Daten, damit Sie keine wiederholte additive Dimension haben. Es sollte eine Tabelle mit einer Zeile pro ID und Preis geben (oder vielleicht mit Duplikaten, aber kontrolliert durch Wirksamkeits- und Enddaten).

Die Daten sind durcheinander; Sie sollten nicht davon ausgehen, dass der Preis für eine bestimmte ID in allen Zeilen gleich ist. Sie müssen dies jedes Mal überprüfen, wenn Sie die Felder verwenden, bis Sie die Daten korrigieren.