如何对mysql表中的重复值求和

tvz2xvvm  于 2021-06-25  发布在  Mysql
关注(0)|答案(1)|浏览(682)

我想从下表中检索有关日期和参考号列的重复美元金额的总和

uid         date       USD      Ref_Nr
1     2018-04-11    1       7 
1     2018-04-11    2       7
1     2018-04-11    3       8
1     2018-04-11    4       8
1     2018-04-11    6       6
1     2018-04-11    6       6 
1     2018-04-10    3       7
1     2018-04-10    5       7
1     2018-04-10    2       8
1     2018-04-10    2       8

这是我的sql查询和我尝试的,但是我没有得到正确的输出,请帮助我

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

这里是预期输出

uid         date       USD      Ref_Nr 
1     2018-04-11    3       7  
1     2018-04-11    7       8 
1     2018-04-11    12      6 
1     2018-04-10    8       7 
1     2018-04-10    4       8
nfg76nw0

nfg76nw01#

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

在这种情况下,您必须在group by中有ref\u nr才能获得所需的结果。基于样本数据的uid是不需要的;但明智的做法是,始终按groupby中select的非聚合字段分组。在mysql中这样做的唯一原因是它们扩展了组;大多数其他rdbms都会抛出一个关于GROUPBY中缺少的非聚合字段的错误。在版本5.7.5和更高版本中,此功能在以前默认启用的情况下默认禁用。
至于为什么集团需要参考编号:
mysql引擎认为您只需要按日期分组。因此,所有的参考编号相加,系统只需选择一个日期显示;uid相同;但既然它们都是一样的;你不在乎。参考号是这样的。
所以要解决这个问题,只需添加 ref_nr 从添加到组 UID . 因此,从到按所有非聚合列分组是很好的选择。

相关问题