sql >> Databasteknik >  >> RDS >> Mysql

Hur man summerar dubblettvärdena från mysql-tabellen

SELECT  uid 
     ,  date 
     , SUM(USD) AS USD 
     ,  Ref_Nr  
  FROM my_table
 GROUP 
    BY `date`, Ref_Nr, uid;

I det här fallet måste du ha Ref_Nr i gruppen av för att få önskat resultat. uid, baserat på exempeldata, behövs inte; men det är klokt att alltid gruppera efter de icke aggregerade fälten från markeringen i gruppen efter. Den enda anledningen till att detta fungerar i mySQL är att de förlänger gruppen av ; de flesta andra RDBMS skulle skicka ett felmeddelande om de saknade icke aggregerade fälten i gruppen av. I version 5.7.5 och senare är den här funktionen inaktiverad som standard där den tidigare var aktiverad som standard.

Angående varför ref_nr behövs i gruppen av:

MySQL-motorn tror att du bara vill gruppera efter datum. Så alla ref_NR:s summeras och systemet väljer helt enkelt en per datum att visa; samma för uid; men eftersom de alla är likadana; du bryr dig inte. Detta är fallet med ref_nr.

Så för att lösa problemet lägger du bara till ref_nr lägg till UID till gruppen . Så det är bra från till grupp efter alla icke aggregerade kolumner från välj till gruppen efter.




  1. mysql:gruppera efter ID, få högsta prioritet per varje ID

  2. Varför matchar _ (understreck) - (bindestreck)?

  3. Tabellvärderad funktion med flera påståenden vs inline-värderad tabellfunktion

  4. MySQL installera och ladda databas på Inno Setup script