gpt4 book ai didi

mysql - 如何使用 MySQL 中的 case 语句获取列差异计数的范围?

转载 作者:行者123 更新时间:2023-11-29 01:50:49 25 4
gpt4 key购买 nike

我有一个名为 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`

最佳答案

你很接近:

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;

注意:我也改变了逻辑。第一个匹配条件是用于结果的条件。因此,您可以将条件“链接”在一起作为不平等。 (在实践中,这使得更改边界变得更加容易。)

关于mysql - 如何使用 MySQL 中的 case 语句获取列差异计数的范围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44261506/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com