あなたは店舗名によってグループに外部クエリを試してみて、それが非整数値を返すことができるようにfloat
にAVG
パラメータをキャストすることができます
SELECT storeName, avg(CAST(counts AS float)) FROM
(Select count(*) AS counts, S.Name as storeName
FROM Store S JOIN Product P ON S.Id = P.StoreId Group By S.id, S.Name) table1
GROUP BY storeName
それは最善の方法ではないかもしれこれを行うには、期待される結果を返す必要があります。
UPDATE
私は答えを検証し、固定されたバージョンで、コードを更新しました。それがあなたの事件のために働くかどうか私に教えてください。
UPDATE II
コメントによると、あなたは、各ショップ名用製品の数を計算し、データベース内の製品の合計数で割りたいと思います。 これは1つのクエリであることを持っている場合、あなたはこのようにそれを行うことができます。
SELECT S.Name as storeName, CAST(count(*) AS float)/MIN(T.TotalCount) AS AVGToTotalProductsCount
FROM Store S JOIN Product P ON S.Id = P.StoreId
JOIN (SELECT COUNT(1) AS TotalCount FROM Product) T ON 1=1
GROUP BY S.Name
クエリが複数のクエリに分割することができますしかし、もし、あなたがこのようにそれを計算することができる場合があります
DECLARE @totalNumOfProducts INT
SELECT @totalNumOfProducts = COUNT(1) FROM Product
SELECT S.Name as storeName, CAST(COUNT(*) AS float)/@totalNumOfProducts AS AVGToTotalProductsCount
FROM Store S JOIN Product P ON S.Id = P.StoreId
GROUP BY S.Name
私は少し混乱しています。このクエリは、商品の数が返す値と同じ値を返すのはなぜですか? – TechGirl
場合によってはそれが必要です。特定の名前を持つ1つのショップ(1つのshop.Id)しかない場合、このショップ名の平均値はその商品の数と同じなので、両方の照会が同じ値を返すことがあります。それ以外の場合は、異なる場合があります。 –
私は各グループの平均がnumberOfProductsInThatGroup /総製品数として計算されていることを理解していますか? – TechGirl