首页 > 代码库 > 面试时遇到的SQL

面试时遇到的SQL

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

 

面试时遇到的SQL