I have a table where I store some items. These items can be of four types (1,2,3,4) and each item can be open (status=1 or 2) or closed (status=3).
I want to build a dataset where I have for each type the count of how many items are in status 3 and the total amount of items for that type. I have no problems to extract these informations separately (SELECT count(id), type FROM table WHERE status=3 GROUP BY type and SELECT count(id), type FROM table GROUP BY type) but I would like to have them side by side. I was wondering to join the two tables by type but maybe there is an easier way to do it?
Note: running mysql 8
| id | type | status |
|---|---|---|
| 1 | 1 | 1 |
| 2 | 1 | 2 |
| 3 | 1 | 3 |
| 4 | 2 | 1 |
| 5 | 2 | 1 |
| 6 | 3 | 1 |
| 7 | 4 | 3 |
| 8 | 4 | 3 |
| Type | closed | total |
|---|---|---|
| 1 | 1 | 3 |
| 2 | 0 | 2 |
| 3 | 0 | 1 |
| 4 | 1 | 1 |
CodePudding user response:
We can try to use the condition aggregate function to add conditions to the aggregate function.
SELECT Type,
SUM(distinct status = 3) closed,
COUNT(*) total
FROM T
GROUP BY Type
