请教几个子查询的问题?
想请教我的这三道题哪里出错了,为什么显示不出正确答案?
-- 显示出比天津市入职最晚的职工入职还晚的职工
select 姓名 from 职工 where 入职时间 in
(select max(入职时间) from 职工 where 籍贯= '天津市 ' <
(select 入职时间 from 职工)
)
-- 显示出比‘刘新’工资高的所有职工姓名和实际工资
select 姓名,基本工资+奖金+津贴+补助-扣除-税收 from 职工,工资 where 职工.职工号=工资.职工号 and 姓名= '刘新 '
and (基本工资+奖金+津贴+补助-扣除-税收) < (select 基本工资+奖金+津贴+补助-扣除-税收 from 工资)
-- 显示出奖金和‘李艺’一样多的职工姓名和所在部门名称
select 姓名,所在部门 from 职工,工资 where 职工.职工号=工资.职工号 and 奖金 and 姓名= '李艺 '
=(select 奖金 from 工资)
create database 冰人集团 --建立数据库
go
use 冰人集团 --打开数据库
create table 部门
(
部门号 int primary key,
部门名称 char(10) not null
) --建立部门表
insert into 部门 values(1, '财务处 ') --填充数据
insert into 部门 values(2, '人事处 ')
insert into 部门 values(3, '市场部 ')
create table 职工 --建立职工表
(
职工号 int primary key,
姓名 char(10) not null,
性别 char(2) check(性别= '男 ' or 性别= '女 '),
出生日期 smalldatetime check(出生日期 <getdate()),
党员 char(2) check(党员= '是 ' or 党员= '否 '),
入职时间 smalldatetime check(入职时间 <getdate()),
所在部门 int foreign key references 部门(部门号),
籍贯 char(10)
)
insert into 职工 values(1, '孙华 ', '男 ', '1952-1-3 ', '是 ', '1970-10-10 ',1, '天津市 ')
insert into 职工 values(2, '陈明 ', '男 ', '1945-5-8 ', '否 ', '1965-1-1 ',2, '北京市 ')
insert into 职工 values(3, '程西 ', '女 ', '1980-6-10 ', '否 ', '2002-7-10 ',1, '北京市 ')
insert into 职工 values(4, '苏天气 ', '女 ', '1965-3-10 ', '是 ', '1987-7-10 ',2, '天津市 ')
insert into 职工 values(5, '刘少文 ', '男 ', '1942-1-1 ', '否 ', '1960-8-10 ',2,null)
insert into 职工 values(6, '刘新 ', '男 ', '1952-10-8 ', '否 ', '1970-7-1 ',1, '上海市 ')
insert into 职工 values(7, '余辉 ', '女 ', '1980-12-4 ', '否 ', '2001-7-10 ',3, '武汉市 ')
insert into 职工 values(8, '王晓艳 ', '女 ', '1980-11-10 ', '是 ', '2001-7-10 ',2, '河北省 ')
insert into 职工 values(9, '李玉 ', '女 ', '1964-2-12 ', '是 ', '1989-7-15 ',1, '天津市 ')
insert into 职工 values(10, '周涛 ', '男 ', '1963-2-10 ', '否 ', '1983-7-20 ',3, '河北省 ')
insert into 职工 values(11, '欧阳少兵 ', '男 ', '1965-4-19 ', '否 ', '1984-7-12 ',2, '北京市 ')
insert into 职工 values(12, '张旗 ', '男 ', '1980-11-10 ', '否 ', '1999-9-18 ',3, '天津市 ')
insert into 职工 values(13, '李涵 ', '女 ', '1982-5-10 ', '否 ', '2002-2-14 ',3, '天津市 ')
insert into 职工 values(14, '魏君 ', '女 ', '1977-3-23 ', '是 ', '1993-7-10 ',3,null)
insert into 职工 values(15, '李艺 ', '男 ', '1979-9-18 ', '否 ', '2001-7-20 ',3, '上海市 ')
create table 工资--建立工资表
(
职工号 int primary key foreign key references 职工(职工号),
月份 int check(月份> =1 and 月份 <=12),
基本工资 money check(基本工资> 0),
津贴 money check(津贴> =0),
补助 money check(补助> =0),
奖金 money check(奖金> =0),
扣除 money check(扣除> =0),
税收 money check(税收> =0)
)
insert into 工资 values(1,8,2800,1200,180,200,0,220)
insert into 工资 values(2,8,2600,1000,200,300,0,180)
insert into 工资 values(3,8,1880,880,200,260,50,120)
insert into 工资 values(4,8,2200,980,180,230,80,110)
insert into 工资 values(5,8,2300,880,210,0,0,125)
insert into 工资 values(6,8,2100,600,220,180,50,110)
insert into 工资 values(7,8,2200,800,180,200,120,120)
insert into 工资 values(8,8,2000,780,120,100,0,100)
insert into 工资 values(9,8,2500,870,130,150,0,120)
insert into 工资 values(10,8,2350,700,250,180,50,120)
insert into 工资 values(11,8,1900,800,260,130,0,100)
insert into 工资 values(12,8,1800,500,200,100,50,100)
insert into 工资 values(13,8,1580,500,200,100,0,100)
insert into 工资 values(14,8,1300,450,200,100,0,100)
insert into 工资 values(15,8,1380,450,200,100,0,10)
[解决办法]
--显示出比天津市入职最晚的职工入职还晚的职工
select * from 职工 where 入职时间> (select max(入职时间) as 入职时间 from 职工 where 籍贯= '天津市 ' )
/*
结果:
--------------------------------------------------------------------------
3程西 女1980-06-10 00:00:00否2002-07-10 00:00:001北京市
*/
-- 显示出比‘刘新’工资高的所有职工姓名和实际工资
select t4.姓名,t3.基本工资+t3.奖金+t3.津贴+t3.补助-t3.扣除-t3.税收 as 实际工资
from 职工 t4
left join 工资 t3 on t4.职工号=t3.职工号
where t3.基本工资+t3.奖金+t3.津贴+t3.补助-t3.扣除-t3.税收>
(select t2.基本工资+t2.奖金+t2.津贴+t2.补助-t2.扣除-t2.税收 from 职工 t1
left join 工资 t2 on t1.职工号=t2.职工号
where t1. 姓名= '刘新 ' )
/*
结果:
姓名 实际工资
-----------------------------
孙华 4160.0000
陈明 3920.0000
程西 3050.0000
苏天气 3400.0000
刘少文 3265.0000
余辉 3140.0000
李玉 3530.0000
周涛 3310.0000
欧阳少兵 2990.0000
*/
--显示出奖金和‘李艺’一样多的职工姓名和所在部门名称
select t1. 姓名,t5. 部门名称 from 职工 t1
left join 工资 t2 on t1.职工号=t2.职工号
left join 部门 t5 on t5. 部门号=t1. 所在部门
where t2.奖金=(select t4.奖金 from 职工 t3
left join 工资 t4 on t3.职工号=t4.职工号
where t3. 姓名= '李艺 ')
/*
结果:
姓名 部门名称
---------------------------
王晓艳 人事处
张旗 市场部
李涵 市场部
魏君 市场部
李艺 市场部
*/
我的异常网推荐解决方案:软件开发者薪资,http://www.myexception.cn/other/1391128.html