I have tables like below.
I would like to grouping
and counting
by referreing to its score.
customer score A 10 A 20 B 30 B 40 C 50 C 60
First, I would like to sum score
by customer
It achived by group by
method.
customer score A 30 B 70 C 110
second, I would like to count
by binning following band.
I couldn’t figure out how to count after grouping
band count 0-50 1 50-100 1 100- 0
Are there any way to achieve this?
Thanks
Advertisement
Answer
You could use a union approach:
WITH cte AS ( SELECT COUNT(*) AS score FROM yourTable GROUP BY customer ) SELECT '0-50' AS band, COUNT(*) AS count, 0 AS position FROM cte WHERE score <= 50 UNION ALL SELECT '50-100', COUNT(*), 1 FROM cte WHERE score > 50 AND score <= 100 UNION ALL SELECT '100-', COUNT(*), 2 FROM cte WHERE score > 100 ORDER BY position;