簡體   English   中英

SQL中棘手的“分組”排序

[英]Tricky “grouped” ordering in SQL

一段時間以來一直遇到麻煩。

我有一個像這樣的數據庫:

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

我想進行搜索,找到最便宜的汽車,然后通過價格上漲來訂購同一品牌的其他汽車。

我希望我的輸出是這樣的:

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

最便宜的車是福特嘉年華,所以其他福特車型按照價格直接訂購。 然后本田擁有第二個最便宜的車型,所以爵士樂和其他本田車隊緊隨其后。

這可能嗎?

您需要做的是創建一個瞬態數據集,其中包含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

這樣的事情應該有效:

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

我會按照最低價格按Car_Brand順序進行分組,然后按分類的car_brand和價格進行訂購。 我會看看我是否可以為此完成查詢。

我想你可以用以下查詢來做到這一點

SELECT Car_ID, Car_Brand, Car_Model, Car_Price 
FROM tblcars
ORDER BY Car_Price, Car_Brand

除非我錯過了什么

select * from cars order by  Car_Price, Car_Brand ASC

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM