の句をCASE
使用するステートメントに基づいて単一の平均を入力しようとしていますが、グループ関数エラー コード 1111 の無効な使用が返されます。WHERE
MONTHS
COUNT
SELECT
count(ORDER_NUMBER) as cnt,
a.ITEM,
MONTH(TRANS_DATE) as Month,
AVG(CASE
WHEN count(ORDER_NUMBER) IS NULL THEN 0
WHEN count(ORDER_NUMBER) < 1 AND a.CAT != 'E' THEN 0
WHEN count(ORDER_NUMBER) < 1 AND a.CAT = 'E' THEN .05
WHEN count(ORDER_NUMBER) >= 1 AND count(ORDER_NUMBER) < 4 AND a.CAT = 'E' THEN .5
WHEN count(ORDER_NUMBER) >= 4 AND a.CAT = 'E' THEN 1
WHEN count(ORDER_NUMBER) <= 5 AND a.CAT != 'E' THEN .05
WHEN count(ORDER_NUMBER) >= 6 AND count(ORDER_NUMBER) < 11 AND a.CAT != 'E' THEN .25
WHEN count(ORDER_NUMBER) >= 11 AND count(ORDER_NUMBER) < 21 AND a.CAT != 'E' THEN .5
WHEN count(ORDER_NUMBER) >= 21 AND a.CAT != 'E' THEN 1 END) as TSCORE
FROM trx.TRX_Import t2
JOIN ATTRIBUTES a
ON a.ITEM = t2.ITEM
WHERE `TRANS_DATE` BETWEEN DATE_SUB(CURDATE(), INTERVAL 365 DAY) AND CURDATE()
AND t2.ITEM = 'WARI-BB150'
追加を追加すると、GROUP BY MONTH
各月のTSCOREを正しく識別します...それらすべてのTSCOREの平均を1つ吐き出すだけです。
でGROUP BY MONTH
、それは吐き出します:
cnt ITEM Month TSCORE
1 WARI-BB150 1 0.5
2 WARI-BB150 2 0.5
1 WARI-BB150 3 0.5
2 WARI-BB150 4 0.5
2 WARI-BB150 5 0.5
2 WARI-BB150 6 0.5
4 WARI-BB150 7 1
2 WARI-BB150 10 0.5
3 WARI-BB150 11 0.5
1 WARI-BB150 12 0.5
上記の表に基づいて、アイテムの平均 TSCORE だけを吐き出すデータを希望します (したがって、1 行の情報のみ)。
cnt ITEM TSCORE
20 WARI-BB150 0.55