有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