sql

create table 工资
(
单位 int,
编号 int,
固定工资 int,
活工资 int,
津贴 int,
应发合计 int,
房租 int,
水电气 int,
应扣工资 int,
实发工资 int
)
select * from 工资
insert into 工资 values(1,0001,489,273,34,0,50,12,0,0)
insert into 工资 values(1,0002,801,448,43,0,65,35,0,0)
insert into 工资 values(6,0003,691,386,51,0,39,61.01,0,0)
insert into 工资 values(6,0004,529,296,73,0,54,45,0,0)
insert into 工资 values(3,0005,585,327,39,0,61,65,0,0)
insert into 工资 values(2,0006,324,181,54,0,43,21,0,0)
insert into 工资 values(3,0007,546,305,63,0,52,34,0,0)
insert into 工资 values(6,0008,789,441,29,0,35,31,0,0)
insert into 工资 values(1,0009,579,324,43,0,46,53,0,0)
insert into 工资 values(2,0010,814,455,67,0,54,29,0,0)
create table 职工(
编号 int,单位 int,姓名 char(10),性别 char(4),出生日期 varchar(40),职称 char(10)
)
select * from 职工
insert into 职工 values (0001,1,'张三','男','1966-5-21','副教授');
insert into 职工 values (0002,1,'李四','男','1967-4-30','副教授')
insert into 职工 values (0003,6,'王五','女','1968-9-21','高工')
insert into 职工 values (0004,6,'陈六','男','1970-7-23','讲师')
insert into 职工 values (0005,3,'何七','女','1972-4-29','讲师')
insert into 职工 values (0006,2,'李明','女','1966-5-4','副教授')
insert into 职工 values (0007,3,'王阳','男','1972-8-1','会计师')
insert into 职工 values (0008,6,'张红','男','1976-4-1','统计师')
insert into 职工 values (0009,1,'陈洋','女','1980-2-1','助教')
insert into 职工 values (0010,2,'成实','女','1978-10-28','助教')
--写出"求出实发工资最高的职工姓名

解决方案 »

  1.   

    是写出应发合计最高的职工姓名。应该是嵌套查询吧。那max应该怎么用呢
      

  2.   

    select * from 工资 a, 职工 b
    where a.编号=b.编号
    and a.应发合计=(select max(应发合计) from 工资)
      

  3.   

    create table 单位代码
    (
    单位 int,名称 char(10)
    )
    insert into 单位代码 values(1,'办公室')
    insert into 单位代码 values(2,'财务科')
    insert into 单位代码 values (3,'人事部')
    insert into 单位代码 values (4,'理学院')
    insert into 单位代码 values (5,'文学院')
    insert into 单位代码 values (6,'法学院')
    加上这段代码
    --写出"统计每个单位的职工人数的sql select命令,查询结果中应包含单位代码,单位名称,职工人数
      

  4.   


    SELECT 
      C.单位      单位代码,
      C.名称      单位名称,
      B.编号      职工编号,
      B.姓名      职工姓名,
      C.应发合计
    FROM (
            SELECT 单位, 编号, 应发合计, RANK() OVER (PARTITION BY 应发合计)
            FROM 工资
          ) A, 职工 B, 单位代码 C
    WHERE A.编号=B.编号 AND A.单位=C.单位 AND RANK_SALARY=1
      

  5.   

    --写出"求出实发工资最高的职工姓名
    select d.实发工资, c.姓名
      from f_职工 c,
           (select *
              from f_工资
             where 实发工资 in (select max(实发工资)
                              from (select a.单位, a.编号, b.姓名, a.实发工资
                                      from f_工资 a, f_职工 b
                                     where a.单位 = b.单位
                                       and a.编号 = b.编号))) d
     where c.编号 = d.编号
       and c.单位 = d.单位
      

  6.   

    --写出"统计每个单位的职工人数的sql select命令,查询结果中应包含单位代码,单位名称,职工人数
    select 单位, 名称, count(单位) as dwrs
      from (select a.单位, a.名称, c.姓名 --,c.编号
              from f_单位代码 a, f_工资 b, f_职工 c
             where b.单位 = c.单位
               and b.编号 = c.编号
               and a.单位 = c.单位
               and a.单位 = b.单位)
     group by 单位, 名称
      

  7.   

    select 姓名 from 职工 where 编号=(select 编号 from(select 编号, max(固定工资+活工资+津贴+房租+水电气-应扣工资) 实发工资 
    from 工资 group by 编号 order by 实发工资 desc) where rownum<=1);
      

  8.   

    select * from 职工 where
    编号=(select 编号 from 工资
    where (固定工资+活工资+津贴-房租-水电气)=(select max((固定工资+活工资+津贴-房租-水电气))from 工资));