Problem Description
The following query:
```
SELECT
year, id, rate
FROM h
WHERE year BETWEEN 2000 AND 2009
ORDER BY id, rate DESC
```
yields:
```
year | id | rate
2006 | p01 | 8.0
2003 | p01 | 7.4
2008 | p01 | 6.8
2001 | p01 | 5.9
2007 | p01 | 5.3
2009 | p01 | 4.4
2002 | p01 | 3.9
2004 | p01 | 3.5
2005 | p01 | 2.1
2000 | p01 | 0.8
2001 | p02 | 12.5
2004 | p02 | 12.4
2002 | p02 | 12.2
2003 | p02 | 10.3
2000 | p02 | 8.7
2006 | p02 | 4.6
2007 | p02 | 3.3
```
I want only the top 5 rows for each id:
```
year | id | rate
2006 | p01 | 8.0
2003 | p01 | 7.4
2008 | p01 | 6.8
2001 | p01 | 5.9
2007 | p01 | 5.3
2001 | p02 | 12.5
2004 | p02 | 12.4
2002 | p02 | 12.2
2003 | p02 | 10.3
2000 | p02 | 8.7
```
Is there a way to do this using some kind of LIMIT like modifier that applies to each group?
AI-Generated Solution
Powered by LMSouq AI · GPT-4.1-mini
Analyzing problem and generating solution…
Was this solution helpful?