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

Hvordan bruger man distinkt og sum begge sammen i oracle?

Jeg ville være meget forsigtig med en datastruktur som denne. Først skal du kontrollere, at alle id s har præcis én pris:

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

Jeg tror, ​​at den sikreste metode er at udtrække en bestemt pris for hvert id (sig maksimum) og lav derefter sammenlægningen:

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

Derefter skal du rette dine data, så du ikke har en gentagen additiv dimension. Der skal være en tabel med én række pr. id og pris (eller måske med dubletter, men kontrolleret af ikrafttrædelses- og slutdatoer).

Dataene er rodet; du skal ikke antage, at prisen er den samme på alle rækker for et givet id. Det skal du tjekke hver gang du bruger felterne, indtil du retter dataene.



  1. Kan kommentarer hæmme ydeevnen af ​​lagrede procedurer?

  2. Sådan bruger du PreparedStatement og kasus-ufølsom søgning

  3. Hvordan producerer man fantomlæsninger?

  4. hvordan ændres postgresql lytteport i Windows?