Как ограничить каждую строку в общем столбце sql? - PullRequest
0 голосов
/ 18 марта 2019

У меня есть столбец, подобный этому

total  name   gender 
2      Mike   male
2      Dion   male 
2.     Shinta female
2      Sarah  female
10     Pio    male
10     Olive  female
10     Steve  male
80     Yuri   female
80     Kio    male. 
80     Doni   male
80     Dora   female
80     Nobi   male. 
80     Hiou   male

как ограничить каждую сумму всего 2 человека ??Я получил эту таблицу из созданного Просмотр и Присоединение к ней, и получил эту таблицу, но если я ограничу, она ограничит только первую строку в верхней части, но не каждую сумму, которую я действительно хочу получить для каждого итогового 2 с 2 людьми, и всего 10получить 2 человека, а 80 получить 2 человека, это возможно ???

Ответы [ 2 ]

3 голосов
/ 18 марта 2019

Вы можете попробовать использовать row_number()

select * from
(
select *, row_number() over(partition by total order by null) as rn
from tablename
)A where rn<=2
0 голосов
/ 18 марта 2019

Для этого часто используются оконные функции:

select t.*
from (select t.*, row_number() over (partition by total order by total) as seqnum
      from tempview t  -- or whatever your logic is here
     ) t
where seqnum <= 2;

Конечно, оконные функции доступны только в самых последних версиях SQLite.

В старых версиях SQLite это больно, но это должно работать:

select t.*
from tempview t
where t.name in (select t2.name
                 from tempview t2
                 where t2.total = t.total
                 limit 2
                );

Предполагается, что имена не повторяются для данного total.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...