sql >> データベース >  >> RDS >> Mysql

mysqlテーブルから重複する値を合計する方法

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

    この場合、目的の結果を得るには、groupbyにRef_Nrが含まれている必要があります。サンプルデータに基づくuidは必要ありません。ただし、groupbyのselectからの非集計フィールドで常にグループ化することをお勧めします。これがmySQLで機能する唯一の理由は、拡張するためです。グループ化 ;他のほとんどのRDBMSは、groupbyで欠落している非集計フィールドに関するエラーをスローします。バージョン5.7.5以降では、この機能はデフォルトで無効になっていますが、以前はデフォルトで有効になっています。

    グループ内でref_nrが必要な理由について:

    mySQLエンジンは、日付でグループ化するだけでよいと考えています。したがって、すべてのref_NRが合計され、システムは表示する日付ごとに1つを選択するだけです。 uidについても同じです。しかし、それらはすべて同じなので、あなたは気にしません。これは、ref_nrの場合です。

    したがって、問題を解決するには、ref_nrを追加するだけです。 UIDを追加することでグループに追加します。 。したがって、selectからgroupbyへのすべての非集計列でgroupbyするのは良いことです。




    1. NULLのある一意のキー

    2. node.js mysqlエラー:ECONNREFUSED

    3. SQL ServerでのNULLIF()のしくみ

    4. AndroidでのMySQLの使用