0

私は4つのテーブルを持っています。各車のブランドの最大値を取得しようとしています。10のブランドがあります。私はどの車が各ブランドにとって最も高価であるかを取得しようとしています。

私が最初にしたことは、情報を取得したい場所からすべてのテーブルをグループ化することでした。テーブルBRAND、MODEL、CLASS、およびVEHを結合しました。ただし、各グループの最大値を取得する方法はよくわかりません。

SELECT B.BRAND_NAME, M.MODEL_NAME, C.CLASS_NAME, V.VEH_YEAR,  V.VEH_PRICE

FROM ((VEHICLE V INNER JOIN CLASS C ON V.CLASS_ID = C.CLASS_ID)
INNER JOIN MODEL M ON M.MODEL_ID = V.MODEL_ID)
INNER JOIN BRAND B ON B.BRAND_ID = M.BRAND_ID

ここに画像の説明を入力してください

私は試した:

SELECT B.BRAND_NAME, M.MODEL_NAME, C.CLASS_NAME, V.VEH_YEAR,  V.VEH_PRICE
FROM (
SELECT B.BRAND_NAME, MAX(V.VEH_PRICE)
FROM ((VEHICLE V INNER JOIN CLASS C ON V.CLASS_ID = C.CLASS_ID)
INNER JOIN MODEL M ON M.MODEL_ID = V.MODEL_ID)
INNER JOIN BRAND B ON B.BRAND_ID = M.BRAND_ID
GROUP BY B.BRAND_NAME
);

私が得ている:ここに画像の説明を入力してください

4

1 に答える 1

1

ブランドごとの最大車両価格のみが必要な場合は、参加しても問題ありません。必要なのは aGROUP BYと関数だけです (このためにテーブルMAX()は必要ないことに注意してください)。Class

SELECT B.BRAND_NAME, 
       MAX(V.VEH_PRICE) AS MAX_VEH_PRICE

FROM ( VEHICLE V
  INNER JOIN MODEL M ON M.MODEL_ID = V.MODEL_ID )
  INNER JOIN BRAND B ON B.BRAND_ID = M.BRAND_ID

GROUP BY B.BRAND_ID, B.BRAND_NAME ;

最高価格の車両のすべての車両データを取得するには、前のクエリをサブクエリ (派生テーブル) に記述してから、再度結合する必要があります。

SELECT B.BRAND_NAME, M.MODEL_NAME, C.CLASS_NAME, V.VEH_YEAR,  V.VEH_PRICE

FROM  
    ( ((VEHICLE V INNER JOIN CLASS C ON V.CLASS_ID = C.CLASS_ID)
      INNER JOIN MODEL M ON M.MODEL_ID = V.MODEL_ID)
      INNER JOIN BRAND B ON B.BRAND_ID = M.BRAND_ID
    )

  INNER JOIN

    ( SELECT M.BRAND_ID, 
             MAX(V.VEH_PRICE) AS VEH_PRICE  
      FROM (VEHICLE V
        INNER JOIN MODEL M ON M.MODEL_ID = V.MODEL_ID)
      GROUP BY M.BRAND_ID 
    ) AS derived

    ON  b.BRAND_ID = derived.BRAND_ID
    AND v.VEH_PRICE = derived.VEH_PRICE ;
于 2012-11-25T20:27:00.910 に答える