带有distinct和sum的SQL查询

时间:2013-03-19 23:43:02

标签: sql sum distinct ansi-sql

我有以下medleys表,其中包含colorsfruitsratings

[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

订单无关紧要。 colorfruit是VARCHAR(50)s,rating是INT。提前谢谢!

4 个答案:

答案 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 byDistinct应该在group by之后作为方便的简写引入。{/ p>

答案 2 :(得分:1)

SELECT `color`,`fruit`,SUM(`rating`)
FROM Medleys
GROUP BY `color`,`fruit`

SQL Fiddle Example

答案 3 :(得分:0)

这应该回答你的问题:


SELECT color, fruit, sum(rating) as [sum]
FROM medleys
GROUP BY color, fruit
ORDER BY color