Mysql 在SQL中将元组添加到一起时选择Distinct
我有一个表,其中包含针对具有重复项的键的随机数据。我希望删除重复数据(在关系代数中称为投影),但与其丢弃附加的数据,不如将其相加。例如:Mysql 在SQL中将元组添加到一起时选择Distinct,mysql,sql,database,relational-algebra,Mysql,Sql,Database,Relational Algebra,我有一个表,其中包含针对具有重复项的键的随机数据。我希望删除重复数据(在关系代数中称为投影),但与其丢弃附加的数据,不如将其相加。例如: orderID cost 1 5 1 2 1 10 2 3 2 3 3 15 应删除orderID中的重复项,同时对每个orderID的值求和: orderID cost 1 17 (5 + 2
orderID cost
1 5
1 2
1 10
2 3
2 3
3 15
应删除orderID中的重复项,同时对每个orderID的值求和:
orderID cost
1 17 (5 + 2 + 10)
2 6
3 15
我的假设是我会以某种方式使用SELECT DISTINCT,但我不知道该怎么做。我理解GROUP BY可能可以做些什么,但我不确定。在这种情况下,您可以使用
GROUP BY
子句,在按-orderId
分组的列中,每一个不同的值获取一行。您可以应用聚合函数来获取未按-sum
分组的列的结果,在这种情况下:
SELECT orderId, SUM(cost)
FROM mytable
GROUP BY orderId
这是一个非常基本的聚合:
SELECT orderId, SUM(cost) AS cost
FROM MyTable
GROUP BY orderId
也就是说,对于每个“orderId”分组,求“cost”字段的和,然后每个组返回一个值。关系代数中没有重复的行。您可以想象在一个关系上实现投影,方法是创建一个看起来像它的非关系,然后删除列,然后消除重复行,然后创建一个看起来像它的关系。但这是一个涉及非关系的过程。SQL表不是关系。SQL不能很好地体现关系概念。在考虑提问之前,请先研究一下可能的重复。在这里,任何关于分组的介绍都会告诉你如何做。请参见文本上方的向下投票箭头(&D)。还点击谷歌的“stackexchange家庭作业”。这是对这个问题的回答。