面试时遇到的SQL

本文提供了一种使用SQL查询每个客户ID每个月最高价格订单及其商品名称的方法,并附带了一个具体的例子来展示如何实现。
CustomerIDDateTimeProductNamePrice
C0012014-11-20 16:02:59 123PVC100
C0012014-11-19 16:02:59 123POM310
C0012014-10-18 16:02:59 123HDPE400
C0012014-10-17 16:02:59 123PET200
C0022014-09-17 16:02:59 123EVA300
C0022014-09-20 16:02:59 123PET210
C0032014-11-20 16:02:59 123HDPE600
C0032014-08-20 16:02:59 123POM300
C0032014-08-10 16:02:59 123EVA310

 

 

 

 

 

 

 

 

 

这是我面试时遇到的一道题目。

如图所示,CustomerID和DateTime是主键,求每个CustomerID每个月最高Price的订单,以及商品名字。

也就是得到如下结果:

 
CustomerIDMonthProductNameMaxPrice
C00111POM310
C00110HDPE400
C0029EVA300
C00311HDPE600
C0038POM300

 

 

 

 

 

 

 

怎么写SQL呢?

 

我的思路是这样的,不知道对不对。

 

Select T2.CustomerID,T2.Month,Tbl.ProductName,T2.MaxPrice

From

(

Select CustomerID,Datetime.Month Month,MaxPrice

From Tbl

Group by Tbl.CustomerID,Datetime.Month

) T2

Inner Join Tbl

On T2.CustomerID = Tbl.CustomerID

And T2.Month = Tbl.DateTime.Month

And T2.MaxPrice = Tbl.Price

 

转载于:https://www.cnblogs.com/summer1987/p/4110890.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值