Агрегирование значений столбца на основе диапазона - PullRequest
0 голосов
/ 29 мая 2020

Я новичок в SQL и stackoverflow, простите, если мой вопрос тривиален. У меня есть запись количества покупок в таблице, поэтому я хочу подсчитать количество клиентов, чьи покупки попадают в диапазон.

TABLE:
+-------------+----------------+
| customer_id | order_quantity |
+-------------+----------------+
|         123 |          10000 |
|         143 |           5000 |
|         999 |         200000 |
|         555 |          50000 |
+-------------+----------------+

Цель состоит в том, чтобы подсчитать, сколько клиентов покупают <5000, между 5000-50000 и 50000-100000 заказов. </p>

Я использовал:

SELECT customer_id,
      CASE
         WHEN COUNT(order_quantity) < 5000
         ....
FROM purchases

Что неверно (даже не работает).

1 Ответ

1 голос
/ 29 мая 2020

Вы можете использовать:

select (case when order_quantity < 5000 then '[0-5000)'
             when order_quantity < 10000 then '[5000-10000)'
             else '10000+'
        end) as grp,
       count(*) as num_purchases,
       count(distinct customer_id) as num_customers
from t
group by grp
order by min(order_quantity);

Если покупатель совершает более одной покупки в данной группе, неясно, хотите ли вы подсчитать количество покупок или количество клиентов. Это делает и то, и другое.

...