日期:2014-05-18  浏览次数:20439 次

帮忙看一下我笔试的这两句sql语句对不对?谢谢
已知两张表:人员表(PERSON)和部门表(DEPART),表结构如下: (10分)
人员表——PERSON
序号 字段名 中文说明 类型 可空 备注
1. ID ID号 INTEGER N PK
2. DEPT_ID 部门ID号 INTEGER N FK,与部门表ID字段对应。
3. NAME 姓名 VARCHAR(20) N
4. SEX 性别 CHAR(2) N 默认‘男’,值只允许‘男’和‘女’
5. BIRTHDAY 出生日期 Date 不能大于当前日期
6. WORKED_YEARS 进入公司年数 INTEGER N 默认0
7. SALARY 工资 DECIMAL(16, 4) N 默认1000.0

部门表——DEPART
序号 字段名 中文说明 类型 可空 备注
1. ID ID号 INTEGER N PK
2. DEPT_NAME 部门名称 VARCHAR(20) N
3. DEPT_TYPE 部门性质 CHAR(1) N 0-一线部门
1-非一线部门
根据上述条件,解答下列问题:
A. 按部门名称、人员性别分组统计人员数量。(第一道题网上参考答案如下,第二三题没答案)
SQL code
SELECT A.DEPT_NAME,B.SEX,COUNT(*) FROM DEPART A, PERSON B WHERE A.ID = B.DEPT_ID GROUP BY A.DEPT_NAME,B.SEX

B. 将进入公司年数在4年(含)以上的一线部门的女员工工资上调10%。(我下面的第二个ID不用改成DEPART.ID吧)
SQL code
Update PERSON SET SALARY=SALARY*1.1 WHERE SEX=’女’ AND WORKED_YEARS>=4 AND PERSON.ID IN (SELECT ID FROM DEPART WHERE DEPT_TYPE=’0’)

C. 将性别为女,且进入公司年数少于2年的非一线部门人员记录删除。(我下面的第二个ID不用改成DEPART.ID吧)
SQL code
DELETE FROM PERSON WHERE SEX=’女’ AND WORKED_YEARS<2 AND PERSON.ID IN ( SELECT ID FROM DEPART WHERE DEPT_TYPE=’1’)



------解决方案--------------------
看不出问题,b和c的 PERSON.ID 可以简化成 ID.
------解决方案--------------------
探讨
已知两张表:人员表(PERSON)和部门表(DEPART),表结构如下: (10分)
人员表——PERSON
序号 字段名 中文说明 类型 可空 备注
1. ID ID号 INTEGER N PK
2. DEPT_ID 部门ID号 INTEGER N FK,与部门表ID字段对应。
3. NAME 姓名 VARCHAR(20) N
4. SEX 性别 CHAR(2) N 默认‘男……

------解决方案--------------------
没什么问题啊
------解决方案--------------------
no problem
------解决方案--------------------
以上可以打100分

SQL code


-----B
Update a SET SALARY=SALARY*1.1 
from PERSON a inner join DEPART b on a.DEPT_ID=b.ID
WHERE SEX=’女’ AND WORKED_YEARS>=4 AND  b.DEPT_TYPE ='0'

----C
delete a from PERSON a inner join DEPART b on a.DEPT_ID=b.ID
WHERE SEX=’女’ AND WORKED_YEARS<2 AND  b.DEPT_TYPE ='1'

------解决方案--------------------
Good Boy!
------解决方案--------------------
探讨
Good Boy!