首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

请问几个子查询的有关问题

2013-09-11 
请教几个子查询的问题?想请教我的这三道题哪里出错了,为什么显示不出正确答案?-- 显示出比天津市入职最晚

请教几个子查询的问题?
想请教我的这三道题哪里出错了,为什么显示不出正确答案?

-- 显示出比天津市入职最晚的职工入职还晚的职工
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

热点排行