SQL查找每个城市购买金额排名第二的用户,列出其购买城市、姓名、购买金额(排序函数)

【面试题】某公司数据库里有3张表,销售订单表、产品明细表、销售网点表

 

”销售订单表”记录了销售情况,每一张数据表示哪位顾客、在哪一天、哪个网点购买了什么产品,购买的数量是多少,以及对应产品的零售价

销售订单表、产品明细表、销售网点表字段之间的关系如下

销售订单表和产品明细表通过“产品”字段关联,销售订单表和销售网点通过“交易网点”关联

【问题】查找每个城市购买金额排名第二的用户,列出其购买城市、姓名、购买金额

【解题思路】

此题逻辑上有3步:

1)第一步每个城市每个用户总的购买金额

2)第二步找出购买金额第二的用户

3)第三步分组列出购买城市、姓名、购买金额

1.每个城市每个用户总的购买金额

需要“销售网点表”、”销售订单表”进行多表联结


select 
    c.城市,
    a.顾客ID,
    sum(a.销售数量*a.零售价格) as 购买金额
from 销售订单表 as a 
inner join 销售网点表 as c
on a.交易网点=c.交易网点
group by c.城市,a.顾客ID;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值