我有一个名为users
的表,其中我只有两列:
users.holidayallowance
)users.remaining
)我想找出这两列的差异范围,例如:
+--------------+--------+
| Taken Days | Ranges |
+--------------+--------+
| 0 - 10 | 13 |
| 11 - 20 | 3 |
| 21 - 30 | 7 |
+--------------+--------+
上表显示:有13人休息0 - 10天,3人休息11 - 20天,7人休息21-30天等。
我已经尝试了以下查询,我知道我错了,所以如果有人可以指导我,那就太好了。谢谢。
SELECT
count(
CASE
WHEN holidayallowance - remaining < 10 THEN '0-10'
WHEN holidayallowance - remaining >10 and holidayallowance - remaining < 20 THEN '10 - 20'
when holidayallowance - remaining >20 and holidayallowance - remaining <30 THEN '20 - 30'
when holidayallowance - remaining >30 and holidayallowance - remaining <40 then '30 - 40'
END
) AS 'Days Taken Off' FROM `users`
答案 0 :(得分:3)
你很近:
SELECT (CASE WHEN holidayallowance - remaining < 10 THEN '0-10'
WHEN holidayallowance - remaining < 20 THEN '10 - 20'
WHEN holidayallowance - remaining < 30 THEN '20 - 30'
WHEN holidayallowance - remaining < 40 THEN '30 - 40'
END) AS Days_Taken_Off,
COUNT(*)
FROM `users`
GROUP BY Days_Taken_Off;
注意:我也改变了逻辑。第一个匹配条件是用于结果的条件。所以,你可以将条件“链接”在一起作为不平等。 (实际上,这使得更改边界变得更加容易。)