给在’宁波’工作的员工,加薪5% 分数 2 作者 浙大城院数据库课程组 单位 浙大城市学院 本题目要求编写SQL语句, 给在’宁波’工作的员工,加薪5%。 表结构: CREATE TABLE `employee` ( `Eid` varchar(10), --职工编号 `EName` varchar(30), --职工姓名 `Wno` varchar(10), --所在仓库 `Salary` int(11) --职工工资 ); CREATE TABLE `warehouse` ( `Wno` varchar(10), --仓库编号 `City` varchar(20), --所在城市 `Size` int(11), --面积 ); 表样例 employee表: Eid EName Wno Salary 0010 张三 A01 3600 0011 刘勇 A01 2700 0012 张立 B01 8500 0021 刘靖 A02 2500 warehouse表: Wno City Size A01 杭州 15000 A02 建德 5000 B01 宁波 1200 B02 奉化 7500 C01 温州 10000 C02 乐清 8000 输出样例: Eid EName Wno Salary 0010 张三 A01 3600 0011 刘勇 A01 2700 0012 张立 B01 8925 0021 刘靖 A02 2500
时间: 2023-07-13 07:34:49 浏览: 377
答案如下:
```
UPDATE employee
SET Salary = Salary * 1.05
WHERE Wno IN (SELECT Wno FROM warehouse WHERE City = '宁波');
```
注:此处使用了子查询,查询 warehouse 表中城市为宁波的仓库编号,然后更新 employee 表中所在仓库编号为这些仓库编号的员工的薪资。
相关问题
设有关系数据库:职 工 关 系 EMPLOYEE (职工号,职工名,街道,城市)工作关系 WORKS(职工号,公司号,工资) 公司关系 COMPANY(公司号, 公司名 , 城市)试用 SQL 语句写 出下列操作 : 将 所 有在“ 银座公司“工作的职工加薪 5 % 。
可以使用如下的 SQL 语句将所有在“银座公司”工作的职工加薪 5%:
```
UPDATE WORKS
SET 工资 = 工资 * 1.05
WHERE 公司号 = (SELECT 公司号 FROM COMPANY WHERE 公司名 = '银座公司');
```
这条 SQL 语句使用了 UPDATE 和 WHERE 语句来更新 WORKS 表中的工资信息,并且只更新那些所在公司为“银座公司”的职工。其中,子查询 `(SELECT 公司号 FROM COMPANY WHERE 公司名 = '银座公司')` 用于获取“银座公司”的公司号,然后将这个公司号作为条件来筛选出需要更新的职工。更新后的工资是原来的 1.05 倍,即加薪了 5%。
使用游标实现以下功能1.根据要求对员工进行加薪,其中6号部门的员工加薪比例只有其它员工的一半。2员工的工资低于5000的,在原有的基础上加薪12%。3.员工的工资在5000到10000之间的,在原有的基础上加薪10%。4.员工的工资超过10000的,在原有的基础上加薪8%。5.最终加薪后的工资取整数,四舍五入。
好的,以下是使用游标实现的代码:
```
DECLARE @dept_no INT, @emp_no INT, @salary DECIMAL(10,2), @new_salary DECIMAL(10,2)
DECLARE employee_cursor CURSOR FOR
SELECT dept_no, emp_no, salary FROM employees
OPEN employee_cursor
FETCH NEXT FROM employee_cursor INTO @dept_no, @emp_no, @salary
WHILE @@FETCH_STATUS = 0
BEGIN
IF @dept_no = 6
SET @new_salary = ROUND(@salary * 1.5, 0)
ELSE IF @salary < 5000
SET @new_salary = ROUND(@salary * 1.12, 0)
ELSE IF @salary >= 5000 AND @salary <= 10000
SET @new_salary = ROUND(@salary * 1.1, 0)
ELSE
SET @new_salary = ROUND(@salary * 1.08, 0)
UPDATE employees SET salary = @new_salary WHERE emp_no = @emp_no
FETCH NEXT FROM employee_cursor INTO @dept_no, @emp_no, @salary
END
CLOSE employee_cursor
DEALLOCATE employee_cursor
```
以上代码中,我们首先定义了一个游标 `employee_cursor`,用于遍历 `employees` 表中的所有员工记录。在遍历过程中,我们根据员工工资的不同范围,以及所属部门是否为 6 号部门,计算出员工加薪后的工资,并更新到 `employees` 表中。
需要注意的是,最终加薪后的工资需要使用 `ROUND` 函数进行四舍五入。同时,为了避免误差,我们将 `salary` 和 `new_salary` 变量的数据类型都设置为 `DECIMAL(10,2)`。
阅读全文