我有一个面试问题,其中有一个以数据库为模型的汽车销售。每个Car
代表汽车销售中的一辆实体汽车,它指的是一个Make
和一个Model
表。一张Sale
桌子跟踪每一个Car
售出的东西。ASale
仅包含一个Car
,因此Sale
每个Car
已售出的唯一产品都有一个记录。
问题是找出Model
汽车销售中销量最高的名称。我回答了一个 3 级嵌套查询。面试官特别要求使用连接的解决方案,我只成功地连接了没有聚合的表。
在使用其他两个聚合时,您将如何加入以下 3 个表(汽车、制造、销售)?
这是模式的粗略草图。这里卖得最多的Model
应该是'卡罗拉'
Car
| carid| modid | etc...
_________________
| 1 | 1 |
| 2 | 1 |
| 3 | 1 |
| 4 | 2 |
| 5 | 2 |
Make
| mkid | name |
_________________
| 1 | Toyota |
| 2 | Nissan |
| 3 | Chevy |
| 4 | Merc |
| 5 | Ford |
Model
| modid| name | mkid |
________________________
| 1 | Corolla| 1
| 2 | Sunny | 2
| 3 | Carina | 1
| 4 | Skyline| 2
| 5 | Focus | 5
Sale
| sid | carid | etc...
_________________
| 1 | 1 |
| 2 | 2 |
| 3 | 3 |
| 4 | 4 |
| 5 | 5 |
编辑:
使用 MS SQL Server 2008
需要的输出:
Model Name | Count
_____________________
Corolla | 3
即Car
销量最多的型号。请注意,表中只有 3 个 Corollas 和 2 个 Sunnys,Car
而Sale
表中的每一个都对应于其他销售细节。这 5Sale
条记录实际上是 Corolla、Corolla、Corolla、Sunnnu 和 Sunny。