2011-09-29 4 views
2

얼마 동안이 문제가 발생했습니다.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 

가장 싼 자동차 있도록 포드 피에스타과 포드 모델의 나머지는 직접적 가격의 지시에 따릅니다. Honda는 그 다음 Jazz와 나머지 Hondas가 따를 정도로 두 번째 가장 싼 모델을 가지고있다.

이것이 가능합니까?

+0

나는 그것을 게시하는대로 주문하고 싶습니다. 따라서 모든 가격은 오름차순으로 정렬되었지만 궁극적으로 그룹화되어 있으며 가장 저렴한 가격으로 브랜드별로 정렬되었습니다. 내 뜻을 알면 – penpen

답변

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 
+0

+1 두 나를 이해하려고, 따라서 삭제 된 의견 – LesterDove

+1

+1 그리고 얼마나 쉽게 윈도우 기능과 함께있을 것입니다! 'SELECT car_id, car_brand, car_model, 가격 FROM cars에서 MIN (price) 이상 (car_brand에 의해 분할), car_brand, price'. 오 ~ 잘 ... –

+0

고맙습니다. 이것은 내 진짜 데이터베이스와 일치하는 몇 가지 개조와 함께 작동하는 것, 많은 감사! – penpen

-2

나는 그때 나는 분 가격 Car_Brand 순서에 의해 그룹화 분을 무언가

+0

브랜드별로 그룹화해야합니다. – Rasika

-2
select * from cars order by Car_Price, Car_Brand ASC 
1

을 놓친하지 않는 한 다음 쿼리

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

으로 그렇게 할 수있을 것 같아요 정렬 된 car_brand 및 가격에 의해 조인을하십시오. 나는 이것을 위해 질의를 할 수 있는지 알게 될 것이다.

는 이 같은
+0

@ Larry Lustig가 나를 때렸다. – Rasika

2

뭔가 작업을해야합니다 :

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 
+1

+1, LEFT JOIN 대신 INNER JOIN을 사용합니다. 아직도 둘 다 괜찮을거야. –

+0

@ Andriy를 포맷하는 것에 대한 응원이 제 휴대폰에서 이루어졌습니다. :) – mwan