COUNT
さまざまな基準に基づいて複数のを使用し、値をグループ化できるSQLクエリを記述できるようにしたいと考えています。
製品の価格を変更し、人々が支払った金額を分析したいという(缶詰の)シナリオがあるとします。
SELECT Product, COUNT(*) as Total FROM Orders WHERE Location = 'Amazon'
SELECT Product, COUNT(*) as HighPriceCount FROM Orders
WHERE Location = 'Amazon' and PRICE > 10
ここから、こういう結果が見られるようになりたいです。
--------------------------------------------
| Product | Total | HighPriceCount | Avg |
--------------------------------------------
| Game 1 | 50 | 20 | .40 |
| Prod 2 | 300 | 200 | .66 |
--------------------------------------------
ここで平均 「10を超える価格」/「販売合計」です。私の最初のアプローチはグループ化Product
することですが、「内部選択」が唯一のパスであるかどうか、またはこれを行うためのよりエレガントな方法があるかどうかを確認したかったのです。多くの重複のように見えますか?これが私の最初のバージョンのクエリです。
-- I don't know if this works?
SELECT Product, COUNT(*) AS Total,
(
SELECT Product, COUNT(*) FROM Orders WHERE Location = 'Amazon' and Price > 10
GROUP BY Product
) AS HighPriceCount,
(Total / HighPriceCount) AS Avg
From Orders
WHERE Location = 'Amazon'
GROUP BY Product