我有以下medleys
表,其中包含colors
,fruits
和ratings
:
[medleys]
medley_id | color | fruit | rating
==============================================
1 red apple 25
2 blue pear 5
3 green apple 12
4 red apple 10
5 purple kiwi 5
6 purple kiwi 50
7 blue kiwi 3
8 blue pear 9
我正在尝试编写符合ANSI标准的SQL查询,该查询将结合每个唯一/不同的color
- fruit
对,并对每对的单个rating
值求和。因此,如果您在上面的表上运行查询,它将生成以下结果集:
[query]
color | fruit | sum
===========================
red apple 35
blue pear 14
blue kiwi 3
green apple 12
purple kiwi 55
因此,查询会看到表格中有两个red
- apple
对,因此会为red
- apple
对创建一个结果,并添加他们的成分ratings
(25 + 10 = 35)等
我确信我需要选择不同颜色/水果值,但不确定如何在相同的“级别/范围”聚合评级:
SELECT
distinct(color, fruit), sum(rating)
FROM
medleys
订单无关紧要。 color
和fruit
是VARCHAR(50)s,rating
是INT。提前谢谢!
答案 0 :(得分:24)
SELECT color, fruit, sum(rating)
FROM medleys
GROUP BY color, fruit
Distinct用于选择不同的元素,仅此而已,您需要聚合,为此需要GROUP BY
和聚合函数(SUM
)。
答案 1 :(得分:4)
您根本不需要distinct
。您需要group by
:
select color, fruit, sum(rating)
from medleys
group by color, fruit
我正在回答,因为我发现这个错误发生了。通常,在SQL中根本不需要select distinct
。您可以随时使用group by
。 Distinct
应该在group by
之后作为方便的简写引入。{/ p>
答案 2 :(得分:1)
SELECT `color`,`fruit`,SUM(`rating`)
FROM Medleys
GROUP BY `color`,`fruit`
答案 3 :(得分:0)
这应该回答你的问题:
SELECT color, fruit, sum(rating) as [sum]
FROM medleys
GROUP BY color, fruit
ORDER BY color