结合多个表选取TOP记录(join的用法)

有3个表A,B,C结构如下:
订单表A(订单号(主键),用户ID(外键),密码,消费金额,......其它字段);
用户表B(用户ID(主键),用户姓名,用户组ID(外键),帐号模板ID(外键)......其它字段);
用户组表C(用户组ID(主键),用户组名,......其它字段)

需要用一个SQL语句实现如下查询结果:
从表A中选择“消费金额”总额排在前10位的用户记录(GROUP BY 用户ID)
查询到的10条记录中需要包含如下字段信息:
用户ID,用户姓名,用户组名,消费金额总和, 并按消费总额降序排列

方法一:
select top 10 A.用户ID,B.用户姓名,C.用户组名,sum(消费金额) as 消费金额总和
from A
left join B on A.用户ID = b.用户ID
left join C on B.用户组ID = C.用户组ID
group by A.用户ID,B.用户姓名,C.用户组名
order by 消费金额总和 desc

方法二:
这个的效率高一点的
select aa.用户ID,B.用户姓名,C.用户组名,aa.消费金额总和
from (select top 10 用户ID, sum(消费金额) as 消费金额总和
from A group by 用户ID order by 消费金额总和 desc) aa
left join B on A.用户ID = b.用户ID
left join C on B.用户组ID = C.用户组ID

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值