महानतम-एन-प्रति-समूहए> प्रश्न आमतौर पर विंडो फ़ंक्शंस का उपयोग करके हल किए जाते हैं:
select *
from (
select book_id, author_id, mark, year,
row_number() over (partition by author_id order by case mark when 'GREAT' then 1 when 'MEDIUM' then 2 else 3 end) as rn
from books
) t
where rn = 1;
उपरोक्त मानक एएनएसआई एसक्यूएल है, लेकिन पोस्टग्रेज़ में (मालिकाना) distinct on
का उपयोग कर रहा है आमतौर पर बहुत तेज़ होता है:
select distinct on (author_id) book_id, author_id, mark, year,
from books
order by author_id,
case mark when 'GREAT' then 1 when 'MEDIUM' then 2 else 3 end