SELECT EMPLOYEE_ID,FIRST_NAME,SALARY, CASE WHEN SALARY>=10000 THEN 'S' WHEN SALARY>=9000 THEN 'A' WHEN SALARY>=7000 THEN 'B' WHEN SALARY>=5000 THEN 'C' ELSE 'D' END '评价', FROM t_employees;这段代码有什么问题
时间: 2023-12-24 17:04:32 浏览: 51
在这段代码中,最后一个逗号后面有一个多余的冒号,应该将逗号删除。正确的代码如下所示:
```
SELECT EMPLOYEE_ID, FIRST_NAME, SALARY,
CASE
WHEN SALARY >= 10000 THEN 'S'
WHEN SALARY >= 9000 THEN 'A'
WHEN SALARY >= 7000 THEN 'B'
WHEN SALARY >= 5000 THEN 'C'
ELSE 'D'
END '评价'
FROM t_employees;
```
此代码的功能是从表 t_employees 中选择 EMPLOYEE_ID、FIRST_NAME、SALARY 和评价字段,其中评价字段通过 CASE WHEN 语句根据 SALARY 的值进行计算。评价字段的值根据 SALARY 的大小被划分为 S、A、B、C、D 五个等级。
相关问题
select employee_id, case when mod(employee_id,2) = 1 and not like 'M%' then salary else 0 end as bonus from Employees;
这是一个 SQL 语句,用于查询 Employees 表中的 employee_id 和对应的 bonus。其中,如果 employee_id 是奇数且不以 M 开头,则 bonus 为该员工的 salary,否则 bonus 为 0。
需要注意的是,这里的 not like 'M%' 应该改为 not like 'M%', 即前面少了一个百分号。
[SQL] select LAST_NAME,JOB_ID,SALARY, case JOB_ID when 'IT_PROG' then SALARY*1.1 when 'ST_CLERK' then SALARY*1.15 when 'SA_REP' then SALARY*1.2 from employees; [Err] 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'from employees' at line 7
在这个 SQL 语句中,case 表达式需要一个 else 子句来处理除了 IT_PROG、ST_CLERK 和 SA_REP 之外的 JOB_ID 值。如果没有 else 子句,那么当 JOB_ID 不等于这三个值时,就会出现语法错误。以下是修改后的 SQL 语句:
```
SELECT LAST_NAME, JOB_ID, SALARY,
CASE JOB_ID
WHEN 'IT_PROG' THEN SALARY * 1.1
WHEN 'ST_CLERK' THEN SALARY * 1.15
WHEN 'SA_REP' THEN SALARY * 1.2
ELSE SALARY
END
FROM employees;
```
这个 SQL 语句会根据 JOB_ID 的值,计算对应的工资涨幅,如果 JOB_ID 不是 IT_PROG、ST_CLERK 或 SA_REP,则工资不变。注意,case 表达式的语法是:
```
CASE expression
WHEN value_1 THEN result_1
WHEN value_2 THEN result_2
...
[ELSE result_default]
END
```
其中,expression 是一个表达式,value_1、value_2 等是要比较的值,result_1、result_2 等是对应的结果,ELSE 语句是可选的,用于处理未匹配到任何值的情况。
阅读全文