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

求助一个sql语句

zhjesse 发布于 2008-01-09 15:11, 1195 次点击
A01,A02,A03表中的字段是一样的,是个话单表
只是按月份建立的,话单的帐期
表中的字段有电话号码phonenum,一次通话的话费charge

请问大家,比如说,怎么查1,2,3三个月花费最高的前10名电话号码啊,就是前三个月总和最高的前10个号码?

谢谢了
对了,是oracle 数据库
3 回复
#2
purana2008-01-09 15:24
select  top 10 PhoneNum,Sum(Charge) Charge
from
(         select top 10 PhoneNum,Sum(Charge) Charge from A01 group by PhoneNum Order by Sharge Desc
          union all
          select top 10 PhoneNum,Sum(Charge) Charge from A02 group by PhoneNum Order by Sharge Desc
          union all
          select top 10 PhoneNum,Sum(Charge) Charge from A03 group by PhoneNum Order by Sharge Desc
) x
group by PhoneNum
Order by Sharge Desc
#3
zhjesse2008-01-09 15:56
谢谢版主

oracle 中没top关键字
还有1月是top10的,
可能2月不一定
但3月也是top10

1+2+3还是top10,那么最后就不没有1个数据了

联合查询应该不要top吧
#4
zhjesse2008-01-09 17:22
搞定

select tt.phonenum
  from (
        select AA.phonenum,
               sum(AA.charge) as all_charges
          from (      
                select phonenum,charge from A01
                union all
                select phonenum,charge from A02
                union all
                select phonenum,charge from A03
               )AA
         group by AA.phonenum
         order by 2 desc
       )tt
 where rownum <= 10
1