表:帐目

+-------------+------+
| Column Name | Type |
+-------------+------+
| account_id  | int  |
| income      | int  |
+-------------+------+

Account_id是该表的主键(具有唯一值的列). 每一行都包含有关一个银行帐户的月收入的信息.

写一个解决方案来计算每个薪资类别的银行账户数量.薪金类别包括:

  • "低工资":所有工资严格低于20000美元."平均水平
  • 薪金":包括范围内的所有薪金[20000美元、50000美元].
  • "高薪":所有薪水严格高于50000美元.

结果表必须包含所有三个类别.如果没有 类别中的帐户,则返回0.

以任意顺序返回结果表.

结果格式如下例所示.

例1:

输入: 帐户表:

+------------+--------+
| account_id | income |
+------------+--------+
| 3          | 108939 |
| 2          | 12747  |
| 8          | 87709  |
| 6          | 91796  |
+------------+--------+

输出:

+----------------+----------------+
| category       | accounts_count |
+----------------+----------------+
| Low Salary     | 1              |
| Average Salary | 0              |
| High Salary    | 3              |
+----------------+----------------+

解释: 低薪:账号2. 平均工资:没有账户. 高薪:账户3、6和8.

link to the problem statement. I tried this.

SELECT 
CASE 
WHEN income < 20000 THEN "Low Salary"
WHEN income >= 20000 AND income <= 50000 THEN "Average Salary"
ELSE "High Salary"
END AS category,
COUNT(*) AS accounts_count
FROM Accounts 
GROUP BY category;

My output is this

| category    | accounts_count |
| ----------- | -------------- |
| High Salary | 3              |
| Low Salary  | 1              |

But expected output is this

| category       | accounts_count |
| -------------- | -------------- |
| High Salary    | 3              |
| Low Salary     | 1              |
| Average Salary | 0              |

推荐答案

试试这个:

select 'Low Salary' as category, sum(case when income<20000 then 1 else 0 end)  as accounts_count
from accounts
union
select 'Average Salary' ,sum(case when income >= 20000 AND income <= 50000 then 1 else 0 end) 
from accounts
union
select 'High Salary', sum(case when income > 50000 then 1 else 0 end) 
from accounts
;

Mysql相关问答推荐

过程/别名是有点长的MySQL命令的一部分吗?

MySQL:统计单词在单元格中出现的次数,并将数字放在bra中单词的旁边

如何防止程序中计数器出错

JPA对具有动态键和动态值的JSON列的原生查询

MySQL - 密码哈希没有预期的格式

如何用sql找出两次之间的差异

如何计算具有权重属性的记录数

状态为已发货的订单返回产品总数量的SQL(不同的两张表)

Next-key lock explication - 范围的主键

从多到多表中 Select 数据而无需重复

查询获取日期之间的可数匹配条目并加入它们以读取用户状态

如果我创建一个没有主键的表然后添加一个主键,主键是聚集索引吗?

如何使用 sequelize 将复合主键放在连接表中?

MySQL Workbench - 如何同步 EER 图

If else on WHERE 子句

如何在 MySQL 的日期时间字段中存储 NULL 值?

比较 MySQL 中的日期忽略 DateTime 字段的时间部分

从另一个表中 Select 具有 id 的行

MySQL 1062 - 键 'PRIMARY' 的重复条目 '0'

mysql GROUP_CONCAT 重复