Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да сумирате дублираните стойности от таблицата на mysql

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

В този случай трябва да имате Ref_Nr в групата от, за да получите желаните резултати. uid, базиран на примерни данни, не е необходим; но е разумно винаги да се групират по неагрегираните полета от избраните в групата по. Единствената причина, поради която това работи в mySQL, е, защото те удължават групата от ; повечето други RDBMS биха издали грешка за липсващите неагрегирани полета в групата от. Във версия 5.7.5 и по-нова тази функция е деактивирана по подразбиране, когато е била активирана по подразбиране преди.

Относно защо ref_nr е необходим в групата от:

Двигателят на mySQL вярва, че искате просто да групирате по дата. Така че всички ref_NR се сумират заедно и системата просто избира по един на дата за показване; същото за uid; но тъй като всички са еднакви; не те интересува. Това е в случая с ref_nr.

Така че, за да разрешите проблема, просто добавете ref_nr към групата чрез и от good от add UID . Така че е добре от до група по всички неагрегирани колони от избраната в групата по.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Датата на MySQL се променя на вчерашна след JPA запазване

  2. Как да присъединя таблица към този SQL код?

  3. PDO дублиращи се стойности в масив

  4. MySQL timestamp изберете период от време

  5. Групово вмъкване с mysql2 и NodeJs хвърля 500