あなたは平均応じてランクをマークして、トップランクの行を取得するためにフィルタリングするウィンドウ関数rank
を使用することができます。
select *
from (
select lgproduct.brand_id,
brand_name,
brand_type,
round(avg(prod_price), 2),
rank() over (
order by round(avg(prod_price), 2) desc
) as rnk
from boff.lgproduct,
boff.lgbrand
where lgproduct.brand_id = lgbrand.brand_id
group by lgproduct.brand_id,
brand_name,
brand_type
) t
where rnk = 1
order by brand_id;
あなたが試行しhaving
を使用する必要がある場合:
select lgproduct.brand_id,
brand_name,
brand_type,
round(avg(prod_price), 2)
from boff.lgproduct,
boff.lgbrand
where lgproduct.brand_id = lgbrand.brand_id
group by lgproduct.brand_id,
brand_name,
brand_type
having round(avg(prod_price), 2) = (
select max(round(avg(prod_price), 2))
from boff.lgproduct,
boff.lgbrand
where lgproduct.brand_id = lgbrand.brand_id
group by lgproduct.brand_id,
brand_name,
brand_type
)
order by lgproduct.brand_id;
私は」まだそれほど遠くない。私はHAVINGまたはWHERE/ANDを使用しているはずです –
@DanMartos - ソリューションベースの解決策を更新しました。しかし、ウィンドウ関数を実際に見てください。彼らは本当に便利です。 – GurV
はい!ありがとうございました!!! –