Problems wording a GROUP BY ranked query

"Ila B." <[email protected]> Sun, 17 Mar 2019 18:05:56 +0100
Newsgroups gmane.comp.db.postgresql.novice
Message-ID <[email protected]>
Hello,

I have a table which looks like this:
Username | prescription_code | birth_date | prescription_date 

I have 5 age classifications: 0-14, 15-24, 25-44, 45-64 and 65+.
I want to extract for each year (using date_part) the three most common prescriptions (maximum count) for each age classification (using just the date subtraction and converting years in days).

I would like results to be in the same table, to export it as CSV in an easy way using the IDE (PGAdmin 4, version 3.5 on Windows). I thought about using UNION and CTEs to extract rank, but that would mean writing 5 queries with CTEs. Is there a better way?

Thanks,
Ilaria