sql >> Databáze >  >> RDS >> Mysql

Jak sečíst duplicitní hodnoty z tabulky mysql

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

V tomto případě musíte mít Ref_Nr ve skupině od, abyste získali požadované výsledky. uid, založené na vzorových datech, není potřeba; ale je rozumné vždy seskupit podle neagregovaných polí z výběru ve skupině podle. Jediný důvod, proč to v mySQL funguje, je ten, že rozšiřují skupina podle ; většina ostatních RDBMS by vyvolala chybu o chybějících neagregovaných polích ve skupině by. Ve verzi 5.7.5 a vyšší je tato funkce ve výchozím nastavení zakázána, pokud byla dříve povolena.

Proč je ve skupině potřeba ref_nr:

Motor mySQL se domnívá, že chcete seskupit pouze podle data. Všechny ref_NR se tedy sečtou a systém jednoduše vybere jeden pro každé datum, který se zobrazí; totéž pro uid; ale protože jsou všichni stejní; je ti to jedno. To není případ s ref_nr.

Chcete-li problém vyřešit, stačí přidat ref_nr do skupiny podle a mimo provoz z přidat UID . Je tedy dobré od do skupiny podle všech neagregovaných sloupců od výběru do skupiny podle.




  1. SQL Server 2017:Import dat CSV z Linuxu do Salesforce pomocí SSIS

  2. MySQL efektivně kopíruje všechny záznamy z jedné tabulky do druhé

  3. Aktualizace MySQL, pokud je hodnota větší než aktuální hodnota

  4. Postgresql:Skriptování provádění psql s heslem