Currently I have the following SELECT:
SELECT column,
COUNT(CASE WHEN column='x' THEN 1 END) AS count_x,
COUNT(CASE WHEN column='y' THEN 1 END) AS count_y,
COUNT(CASE WHEN column='a' THEN 1 END) AS count_a,
COUNT(CASE WHEN column='b' THEN 1 END) AS count_b
...
I want to modify it so that it will keep counting x and y but any other case that's not x or y count as count_other
How can I do that? Where do I put the ELSE in this case?
Sample data:
| id | column |
|---|---|
| 1 | x |
| 2 | x |
| 3 | y |
| 4 | a |
| 5 | b |
| 6 | b |
| 7 | c |
Expected result:
| count_x | count_y | count_other |
|---|---|---|
| 2 | 1 | 4 |
CodePudding user response:
You may use the following logic:
SELECT
col,
COUNT(CASE WHEN col = 'x' THEN 1 END) AS x,
COUNT(CASE WHEN col = 'y' THEN 1 END) AS y,
COUNT(CASE WHEN col = 'a' THEN 1 END) AS a,
COUNT(CASE WHEN col = 'b' THEN 1 END) AS b,
COUNT(CASE WHEN col NOT IN ('x', 'y') THEN 1 END) AS count_other
FROM yourTable;
