Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak zsumować zduplikowane wartości z tabeli mysql

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

W tym przypadku musisz mieć Ref_Nr w grupie przez, aby uzyskać pożądane wyniki. uid, oparty na przykładowych danych, nie jest potrzebny; ale mądrze jest zawsze grupować według pól niezagregowanych z wybranych w grupie według. Jedynym powodem, dla którego działa to w mySQL, jest to, że rozszerzają się grupa przez ; większość innych RDBMS wyrzuciłaby błąd dotyczący brakujących pól niezagregowanych w grupie według. W wersji 5.7.5 i nowszych funkcja ta jest domyślnie wyłączona, jeśli wcześniej była domyślnie włączona.

Dlaczego ref_nr jest potrzebny w grupie przez:

Silnik mySQL uważa, że ​​chcesz po prostu pogrupować według daty. Tak więc wszystkie ref_NR są sumowane, a system po prostu wybiera jeden na datę do wyświetlenia; to samo dla uid; ale ponieważ wszystkie są takie same; nie obchodzi cię to. Tak jest w przypadku ref_nr.

Aby rozwiązać problem, po prostu dodaj ref_nr do grupy przez i z powodu dodania UID . Dlatego dobrze jest pogrupować według wszystkich niezagregowanych kolumn z zaznaczenia do grupy według.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ckfinder php 2.6.2 widok ustawień, wyświetlanie, sortowanie nie działa

  2. SELECT zapytanie zwraca 1 wiersz z każdej grupy

  3. Zwiększone wartości kolumn aktualizacji MySQL (bez automatycznej inkrementacji)

  4. ColdFusion:Opcje aplikacji na podstawie roli?

  5. CONCAT z GROUP_CONCAT w mysql