I have tables like below.
I would like to grouping
and counting
by referreing to its score.
x
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;