Группировка данных в сегменты - SQL - PullRequest
0 голосов
/ 28 февраля 2019

Я пытаюсь заставить SQL сгруппировать некоторые непрерывные данные в два сегмента, но возникает ошибка «агрегатные функции не разрешены в предложении GROUP BY».Как я могу обойти это?

SELECT
(CASE WHEN AVG(amount) BETWEEN 0 AND 100000 THEN "Group 1"
WHEN AVG(amount) > 100000 THEN "Group 2" END) AS Bucket
, AVG(amount)
FROM DB
GROUP BY bucket

Ответы [ 3 ]

0 голосов
/ 28 февраля 2019

попробуйте, как показано ниже

SELECT
CASE when amount BETWEEN 0 AND 100000 THEN 'Group 1'
WHEN amount > 100000 THEN 'Group 2' END AS Bucket
, AVG(amount)
FROM DB
GROUP BY CASE when amount BETWEEN 0 AND 100000 THEN 'Group 1'
WHEN amount > 100000 THEN 'Group 2' END
0 голосов
/ 28 февраля 2019

Вам не нужна группа, поскольку вы имеете дело только с AVG.

SELECT
(CASE WHEN AVG(amount) BETWEEN 0 AND 100000 THEN "Group 1"
WHEN AVG(amount) > 100000 THEN "Group 2" END) AS Bucket
, AVG(amount)
FROM DB
0 голосов
/ 28 февраля 2019

Я считаю, что это то, что вы ищете

SELECT
(CASE amount BETWEEN 0 AND 100000 THEN "Group 1"
WHEN amount > 100000 THEN "Group 2" END) AS Bucket
, AVG(amount)
FROM DB
GROUP BY bucket
...