sql >> Databáze >  >> RDS >> Oracle

Jak používat rozlišovací a sčítat obojí dohromady v orákulu?

S takovou datovou strukturou bych byl velmi opatrný. Nejprve zkontrolujte, zda jsou všechna id s mají přesně jednu cenu:

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

Myslím, že nejbezpečnější metodou je extrahovat konkrétní cenu pro každé id (řekněme maximum) a poté proveďte agregaci:

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

Poté jděte opravit data, abyste neměli opakovaný aditivní rozměr. Měla by existovat tabulka s jedním řádkem na ID a cenu (nebo možná s duplikáty, ale řízená datem účinnosti a ukončením).

Data jsou zmatená; neměli byste předpokládat, že cena je na všech řádcích pro dané ID stejná. Musíte to zkontrolovat pokaždé, když použijete pole, dokud data neopravíte.



  1. Postgres - jak zašifrovat sloupec a jeho data

  2. Chyba s pluginem Maven GAE + Google Cloud SQL

  3. Jak vytvořit novou databázi po prvotní instalaci databáze Oracle 11g Express Edition?

  4. Pochopení systémových sloupců v PostgreSQL