Как получить строки из одной таблицы с разными условиями - PullRequest
1 голос
/ 26 февраля 2020

Я хочу получить данные из одной таблицы с разными условиями. Я использую sqlite в android студии.

**ID    Name       Role**
1   Emma       Manager
2   Olivia     Manager
3   Ava        Manager
4   Isabella   Sales officer
5   Sophia     Sales Officer
6   Charlotte  Sales Officer
7   Mia        Clerk
8   Amelia     Clerk

Допустим, в этой таблице у меня разные типы ролей и разное количество людей в роли. Я хочу выбрать по 2 человека из каждой роли.

Select * from employeeTable where role = 'Manager' LIMIT 2
Select * from employeeTable where role = 'Sales officer' LIMIT 2
Select * from employeeTable where role = 'Clerk' LIMIT 2

Просто хочу присоединиться к результатам этих трех запросов. Извините, если вопрос о детях sh. И заранее спасибо

Ответы [ 2 ]

3 голосов
/ 26 февраля 2020

С row_number() оконной функцией:

select t.id, t.name, t.role 
from (
  select *, row_number() over (partition by role) rn
  from employeeTable
) t
where t.rn <= 2

Вы также можете определить:

partition by role order by name

или:

partition by role order by id

вместо просто:

partition by role

для получения указанных c строк в результатах. Смотрите демо . Результаты:

| ID  | Name     | Role          |
| --- | -------- | ------------- |
| 7   | Mia      | Clerk         |
| 8   | Amelia   | Clerk         |
| 1   | Emma     | Manager       |
| 2   | Olivia   | Manager       |
| 4   | Isabella | Sales Officer |
| 5   | Sophia   | Sales Officer |
0 голосов
/ 26 февраля 2020

Попробуйте запрос и проверьте, работает ли:

Select * from employeeTable where role = 'Manager' LIMIT 2
UNION ALL
Select * from employeeTable where role = 'Sales officer' LIMIT 2
UNION ALL
Select * from employeeTable where role = 'Clerk' LIMIT 2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...