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
私は、すべての一意/異なるcolor
-_fruit
ペアを組み合わせ、各ペアの個々のrating
値を合計するANSI準拠のSQLクエリを作成しようとしています。したがって、上のテーブルでクエリを実行すると、次の結果セットが生成されます。
[query]
color | fruit | sum
===========================
red Apple 35
blue pear 14
blue kiwi 3
green Apple 12
purple kiwi 55
したがって、クエリはテーブルに2つのred
-Apple
ペアがあることを確認するため、red
-Apple
ペアに対して1つの結果を作成します。構成要素ratings
(25 + 10 = 35)などを合計します。
distinct color/fruitの値を選択する必要があると確信していますが、同じ「レベル/スコープ」で評価を集計する方法がわかりません。
SELECT
distinct(color, fruit), sum(rating)
FROM
medleys
順序は関係ありません。 color
とfruit
はVARCHAR(50)sであり、rating
はINTです。前もって感謝します!
SELECT color, fruit, sum(rating)
FROM medleys
GROUP BY color, fruit
Distinctは、個別の要素を選択するために使用されますが、集約する必要はありません。そのためには、GROUP BY
および集約関数(SUM
)。
distinct
はまったく必要ありません。 group by
が必要です:
select color, fruit, sum(rating)
from medleys
group by color, fruit
私はこの間違いが起こるのを見ているので、答えています。一般に、SQLではselect distinct
はまったく必要ありません。代わりにいつでもgroup by
を使用できます。 Distinct
は、便利な省略形としてgroup by
の後に導入する必要があります。
SELECT `color`,`fruit`,SUM(`rating`)
FROM Medleys
GROUP BY `color`,`fruit`
これはあなたの質問に答えるはずです:
SELECT color, fruit, sum(rating) as [sum]
FROM medleys
GROUP BY color, fruit
ORDER BY color