19

、および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

colorすべての一意/個別のfruitペアを組み合わせ、各ペアの個々の値を合計する ANSI 準拠の SQL クエリを作成しようとしていratingます。したがって、上記のテーブルでクエリを実行すると、次の結果セットが生成されます。

[query]
color   |   fruit   |   sum
===========================
red         apple       35
blue        pear        14
blue        kiwi        3
green       apple       12
purple      kiwi        55

したがって、クエリはテーブルに2 つのred-ペアがあることを認識し、 -ペアに対して 1 つの結果を作成し、それらの構成要素(25 + 10 = 35) などを合計します。appleredappleratings

異なる色/果物の値を選択する必要があることは確かですが、同じ「レベル/範囲」で評価を集計する方法がわかりません:

SELECT
    distinct(color, fruit), sum(rating)
FROM
    medleys

順番は関係ありません。colorおよびfruitVARCHAR(50) で、ratingINT です。前もって感謝します!

4

4 に答える 4

29
SELECT color, fruit, sum(rating)
FROM medleys
GROUP BY color, fruit

Distinct は、集計したいときに個別の要素を選択するために使用され、そのためにはGROUP BY集計関数 ( SUM) が必要です。

于 2013-03-19T23:44:11.820 に答える
3

まったく必要ありませんdistinct。必要なものgroup by:

select color, fruit, sum(rating)
from medleys
group by color, fruit

この間違いが起こるのを見ているので、私は答えています。select distinct一般に、 SQL ではまったく必要ありません。代わりにいつでも a を使用できますgroup by。 便利な略記としてDistinct後に導入する必要があります。group by

于 2013-03-19T23:45:24.567 に答える
1
SELECT `color`,`fruit`,SUM(`rating`)
FROM Medleys
GROUP BY `color`,`fruit`

SQL フィドルの例

于 2013-03-19T23:46:35.860 に答える
0

これはあなたの質問に答えるはずです:


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

于 2013-03-19T23:49:09.243 に答える