SQL限制记录分组

问题描述 投票:-1回答:1

我有一张桌子'玩家'在此表中,列为'ID','surname','nation'我需要查询,结果必须显示受国家限制的国家/地区的玩家列表(4个)防爆桌上型球员

ID   surn.. nation
1    Garcia   spa
2    smith    gbr
3    rossi    ita
4    villa    spa
5    renoir   fra
6    muller   ger
7    conti    ita
8    johnson  usa
9    james    gbr
10   lopez    spa
11   dubois   fra
12   petit    fra
13   popov    rus
14  rodriguez spa
15   weber    ger
16   ivanov   rus
17  gonzales  spa
18   wagner   ger
19   bruni    ita
20   Smirnov  rus
21   white    gbr
22   schmidt  ger
23  Armstrong usa
24    green   gbr
25   Schulz   ger 

结果集

Nation| surname-
Spa |Garcia-
Spa| villa-
Spa| lopez-
Spa |rodriguez-
Gbr |smith-
Gbr |james-
Gbr| white-
Gbr| green -
Ita| rossi-
Ita |conti-
Ita |bruni-
Fra |renoir-
Fra| dubois-
Fra| petit-
Ger |muller-
Ger| weber-
Ger| wagner-
Ger |schmidt-
Usa |johnson -
Usa |armstrong-
Rus| popov-
Rus |ivanov-
Rus |Smirnov -
sql sqlite group-by limit
1个回答
0
投票

具有row_number()窗口功能:

select t.nation, t.surname
from (
  select *,
    row_number() over (partition by nation order by id) rn
  from players
) t
where t.rn <= 4
order by t.nation, t.id

请参见demo。结果:

| nation | surname   |
| ------ | --------- |
| fra    | renoir    |
| fra    | dubois    |
| fra    | petit     |
| gbr    | smith     |
| gbr    | james     |
| gbr    | white     |
| gbr    | green     |
| ger    | muller    |
| ger    | weber     |
| ger    | wagner    |
| ger    | schmidt   |
| ita    | rossi     |
| ita    | conti     |
| ita    | bruni     |
| rus    | popov     |
| rus    | ivanov    |
| rus    | Smirnov   |
| spa    | Garcia    |
| spa    | villa     |
| spa    | lopez     |
| spa    | rodriguez |
| usa    | johnson   |
| usa    | Armstrong |
© www.soinside.com 2019 - 2024. All rights reserved.