演習用のデータベースがあります。対応するタイトル名でさまざまなタイプの最大価格を一覧表示したいのですが、もちろん、GROUP BY 句には表示されないため、タイトル名属性を SELECT 句に入れることはできません。私の問題の解決策はありますか?ありがとう!
SELECT type, MAX(price) "price"
FROM titles
GROUP BY type
ORDER BY type DESC;
使用しているデータベースについては言及していません。ほとんどのデータベースは、ANSI 標準row_number()
およびウィンドウ/分析関数をサポートしています。これがあなたが望むことをする1つの方法です:
select type, name, price
from (select t.*, row_number() over (partition by type order by price desc) as seqnum
from titles t
) t
where seqnum = 1;
をサポートしていない MySQL の場合、次のrow_number()
ことができます。
select type,
substring_index(group_concat(name separator '|' order by price desc), '|', 1) as title,
max(price) as price
from titles
group by type;
これは、タイトルに文字が含まれていないことを前提としていることに注意してください'|'
。