아래 표 1의 데이터를 아래 표 2에 그룹으로 표시하고 싶습니다. 열로 그룹화 할 수는 있지만 예상되는 결과는 소그룹입니다! 지금까지 내가 (assetScore 또는 상태에 의해서만 그룹) SQL 다음 한MySQL : 범위별로 그룹화 한 다음 하위 그룹으로 나누는 방법은 무엇입니까?
는Table-1:
+----+------------+--------+
| id | assetScore | status |
+----+------------+--------+
| 1 | 10 | 1 |
| 2 | 50 | 1 |
| 3 | 32 | 3 |
| 4 | 22 | 1 |
| 5 | 12 | 2 |
| 6 | 14 | 2 |
| 7 | 18 | 3 |
| 8 | 88 | 1 |
| 9 | 65 | 3 |
| 10 | 24 | 3 |
| 11 | 44 | 2 |
| 12 | 66 | 1 |
| 13 | 22 | 3 |
| 14 | 31 | 1 |
| 15 | 36.5 | 3 |
| 16 | 77 | 2 |
+----+------------+--------+
Expected Result:
+--------+---------+-----+--------+
| | Backlog | WIP | Closed |
+--------+---------+-----+--------+
| LOW | 2 | 2 | 3 |
| MEDIUM | 2 | 1 | 2 |
| HIGH | 2 | 1 | 1 |
+--------+---------+-----+--------+
Logic: assetScore => >=0 - <=25 -> LOW, > 25 - <= 60 -> MEDIUM' and > 60 -> HIGH status => 1 -> Backlog, 2 -> WIP and 3 -> closed
:
SELECT
t.RANGE, COUNT(*)
FROM
(SELECT
CASE
WHEN assetScore BETWEEN 0 AND 25 THEN 'LOW'
WHEN assetScore BETWEEN 26 AND 60 THEN 'MEDIUM'
ELSE 'HIGH'
END AS 'RANGE'
FROM device) t
GROUP BY t.RANGE;