Teradata - Невозможно вложить совокупные операции, мин. (Сред.) - PullRequest
0 голосов
/ 01 августа 2020

Я хочу получить месяц, когда у магазина самый низкий средний доход. Я либо получаю список всех магазинов (код ниже дает мне все 12 месяцев для магазина), либо когда я пробую min (avg_rev) во внутреннем выборе, он говорит: «Teradata - Невозможно вложить агрегированные операции». Пожалуйста, помогите.

| store | yearmonth | min(avg_rev)|
| 102   | 2004 9    | $2000       |
| 103   | 2004 8    | $30000      |
etc
SELECT STORE, month_num||year_num AS yearmonth, min(avg_rev)
FROM (SELECT store, EXTRACT(year from saledate) AS year_num, 
   EXTRACT(month from saledate) AS month_num,
   sum(amt)/ COUNT (distinct saledate) AS avg_rev
   FROM trnsact
   WHERE stype='p'
   GROUP BY year_num, month_num,store
   HAVING NOT(year_num=2005 AND month_num=8) AND COUNT (distinct saledate)>20) AS clean_data

GROUP BY store, yearmonth, avg_rev
ORDER BY store asc, min(avg_rev)

1 Ответ

0 голосов
/ 02 августа 2020

Если я правильно понял, вы можете использовать qualify для выбора месяца:

SELECT store, EXTRACT(year from saledate) AS year_num, 
       EXTRACT(month from saledate) AS month_num,
       sum(amt)/ COUNT(distinct saledate) AS avg_rev
FROM trnsact
WHERE stype='p'
GROUP BY year_num, month_num, store
QUALIFY ROW_NUMBER() OVER (PARTITION BY store ORDER BY avg_rev ASC) = 1
...