SQL中棘手的"分组"排序

pen*_*pen 2 mysql sql database

一段时间以来一直遇到麻烦.

我有一个像这样的数据库:

Car_ID   Car_Brand   Car_Model   Car_Price
   1     Ford        Fiesta       4000
   2     Ford        Mustang     29000
   3     Ford        Focus       12000
   4     Honda       Civic       15000
   6     Honda       Jazz         5000
   7     Toyota      Prius       14000
Run Code Online (Sandbox Code Playgroud)

我想进行搜索,找到最便宜的汽车,然后通过价格上涨来订购同一品牌的其他汽车.

我希望我的输出是这样的:

Car_ID   Car_Brand   Car_Model   Car_Price
   1     Ford        Fiesta       4000
   3     Ford        Focus       12000
   2     Ford        Mustang     29000
   6     Honda       Jazz         5000
   4     Honda       Civic       15000
   7     Toyota      Prius       14000
Run Code Online (Sandbox Code Playgroud)

最便宜的车是福特嘉年华,所以其他福特车型按照价格直接订购.然后本田拥有第二个最便宜的车型,所以爵士乐和其他本田车队紧随其后.

这可能吗?

Lar*_*tig 10

你需要做的是创建一个包含car_brand和最低的价格为品牌(我会打电话给brand_price)瞬态数据集,然后再加入数据返回给您的原车表.这将为您提供排序数据所需的额外信息(brand_price):

 SELECT car_id, car_brand, car_model, price FROM cars C1
    JOIN (select car_brand, MIN(price) AS brand_price FROM cars GROUP BY car_brand) C2
      ON C1.car_brand = C2.car_brand
    ORDER BY C2.brand_price, C1.car_brand, C1.price
Run Code Online (Sandbox Code Playgroud)