1
私はPOSトランザクションデータのテーブルを持っており、購入情報の一部を集計しようとしています。サンプルは次のようになりますSQLで平均を計算するときに欠損ペアをゼロとして処理する
pID (int) | pDate (varchar) | pAmount(numeric) | pCode(varchar)
1 | 01-NOV-14 | 12.67 | ELECTRONIC
2 | 01-NOV-14 | 61.89 | HOUSEWARE
3 | 01-NOV-14 | 52.25 | ELECTRONIC
4 | 02-NOV-14 | 9.12 | HOUSEWARE
5 | 02-NOV-14 | 17.11 | ELECTRONIC
6 | 03-NOV-14 | 39.88 | HOUSEWARE
7 | 03-NOV-14 | 21.60 | ELECTRONIC
8 | 03-NOV-14 | 16.78 | HOUSEWARE
9 | 04-NOV-14 | 47.29 | HOUSEWARE
私の目標は、カテゴリごとにグループ化された平均日々の販売額を計算することです。私の問題は、1日あたりの売上数が一定しないため、集計する前に各カテゴリの1日合計を取得する必要があるということです。
この例では、私の目標は、コードによってグループ化された日の平均を生成し、クエリ、次のようになりますないすべての日は、カテゴリごとに毎日合計を計算する、すべてのカテゴリの売上を持っているので、
SalesItem | AverageDailySales
ELECTRONIC | 25.91
HOUSEWARE | 43.74
しかし、と平均をとることは動作しません。クエリを
SELECT s.pCode AS SalesItem, TO_CHAR(AVG(s.TotalDaySales), '999.99') AS AverageDailySales
FROM (SELECT t.pDate, t.pCode, SUM(t.pAmount) as TotalDaySales
FROM Pos_Transactions t
GROUP BY t.pDate, t.pCode) s
GROUP BY s.pCode ORDER BY s.pCode;
利回り
SalesItem | AverageDailySales
ELECTRONIC | 34.54
HOUSEWARE | 43.74
は、11月4日に電子販売が行われておらず、1日あたりの平均販売高が高いことを意味していません。
AVGを使用して計算する際に、不足している項目をどのように処理できますか?
パーフェクト - (GROUP BYがかかっも優先)VKPの答えと問題固定ネストされたクエリとは別個の呼び出し – user2093082