DBでモデル化された自動車販売があるというインタビューの質問がありました。それぞれは、とテーブルCar
を参照する自動車販売の物理的な自動車を表します。テーブルは、販売されたそれぞれを追跡します。は1つだけで構成されているため、販売されたすべてのユニークごとにレコードがあります。Make
Model
Sale
Car
Sale
Car
Sale
Car
Model
問題は、自動車販売で最も売れた名前を見つけることでした。私は3レベルのネストされたクエリで答えました。インタビュアーは、集計を使用せずにテーブルを結合することに成功しただけの結合を使用した解決策を具体的に求めました。
他の2つの集計を使用しながら、以下の3つのテーブル(Car、Make、Sale)をどのように結合しますか?
これがスキーマの大まかなスケッチです。ここで最も売れ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 SQLServer2008の使用
必要な出力:
Model Name | Count
_____________________
Corolla | 3
すなわちCar
、最も売れたモデル。テーブルには3つのカローラと2つのサニーだけがあり、Car
テーブルSale
は他の販売の詳細を持つそれぞれに対応していることに注意してください。5つのSale
レコードは実際にはカローラ、カローラ、カローラ、スンヌ、サニーです。