注册 登录
编程论坛 SQL Server论坛

请教:如何实现查找所有分公司工资前10名

zuoshuhui 发布于 2008-01-09 16:56, 1511 次点击
请教:假设有数据库yggzk,包含公司下属所有分公司的员工工资,如何实现用select语句查找所有分公司工资前10名的员工在yggzk中的所有信息。要求不用游标。
7 回复
#2
yuxin13822008-01-09 17:17
最好给出表结构和部门内容来说明
#3
zhjesse2008-01-09 17:23
表字段都没有,怎么查?
sql server  select top 10
oracle    where rownum<=10
#4
zuoshuhui2008-01-09 19:01
字段包括:分公司代码,姓名,性别,身份证号,出生日期,基本工资,效益工资。分公司代码是3位字符型。有30多个分公司,要求所有分公司员工sum(基本工资+效益工资)的前10位,就是每个分公司的工资前10位。楼上的top 10只能解决单个分公司的前10.
#5
zhjesse2008-01-09 19:46
问问题要把问题讲清楚,你罗列的那些字段在一个表中吗?
还是在不同的表中?

一个表中比较好查,就不说了
下面是多个表的查询,举例用4个分公司的表
我正好今天也在做这个问题


select  top 10 name, salary  from
(
    select  *  from  分公司表1
  union all
    select  *  from  分公司表2
    union all
    select  *  from  分公司表3
    union all
    select  *  from  分公司表4
) order by salary desc
#6
zuoshuhui2008-01-09 20:34
谢谢楼上,可能是我没有说清楚,上面那些字段是在一个表里,这个表包含了所有分公司的员工的工资,我现在需要用select语句从这个表里把30多个公司的工资前10都找出来,就是说要大概300多条记录,每10条记录一组。group by好像不行。
#7
zhjesse2008-01-09 22:33
你是说一次性把这30多个分公司的top10都查出来是吗?

如果是这样,那么最笨的办法就是
select   top  10    第一个分工资的top10查询语句
union  all
select  top  10    第二个分工资的top10查询语句
union  all
..............................

一直到三十多个
#8
zuoshuhui2008-01-09 23:20
这个语句是程序的一部分,要求能在不知道有多少家分公司参与统计的情况下也能查出各个分公司的工资前10名。
1