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