首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在SQL中进行棘手的“分组”排序

在SQL中进行棘手的“分组”排序
EN

Stack Overflow用户
提问于 2011-09-29 10:24:20
回答 5查看 125关注 0票数 2

我已经有一段时间没有解决这个问题了。

我有一个类似如下的数据库:

代码语言:javascript
复制
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

我想执行一个搜索,找到最便宜的汽车,然后按价格升序订购相同品牌的其余汽车。

我希望我的输出是:

代码语言:javascript
复制
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

最便宜的车是福特嘉年华,所以其他福特车型都是直接按价格订购的。然后,本田拥有第二便宜的车型,因此爵士和其他本田紧随其后,以此类推。

这个是可能的吗?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-09-29 10:35:08

您需要做的是创建一个包含car_brand和该品牌的最低价格(我称之为brand_price)的临时数据集,然后将该数据连接回原始的cars表。这将为您提供排序数据所需的附加信息(brand_price):

代码语言:javascript
复制
 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
票数 10
EN

Stack Overflow用户

发布于 2011-09-29 10:33:59

像这样的东西应该是有效的:

代码语言:javascript
复制
SELECT a.*
FROM Cars a
  LEFT JOIN (
    SELECT Car_Brand, MIN(Car_Price) AS MinPrice
    FROM Cars
    GROUP BY Car_Brand
  ) b ON a.Car_Brand = b.Car_Brand
ORDER BY b.MinPrice, a.Car_Price
票数 2
EN

Stack Overflow用户

发布于 2011-09-29 10:32:12

我会按最小价格进行Car_Brand分组,然后按排序后的car_brand和价格进行连接。我将查看是否可以为此完成查询。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7591784

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档