Select first ten of each category? - Mailing list pgsql-general

I'm stumped on this one...

I have a table defined thusly:

create table items (
id serial,
category integer not null references category(id),
name varchar not null,
price real,
unique(category, name));

It has a LARGE number of entries. I'd like to grab the 10 most expensive items
from each category in a single query. How can this be done? Something like

Select items.*
FROM items
where id IN (
    select firstTen(id) FROM items
    group by category
    ORDER BY price DESC
    )
ORDER BY price desc;

But I've not found any incantation to make this idea work...

-Ben
--
"The best way to predict the future is to invent it."
- XEROX PARC slogan, circa 1978

pgsql-general by date:

Previous
From: "Merlin Moncure"
Date:
Subject: Re: Leverage your PostgreSQL V8.1 skills to learn DB2
Next
From: Yanni Chiu
Date:
Subject: Re: Select first ten of each category?