Я использую SQL сервер и у меня есть таблицы:SQL изменить запрос, возвращающий результаты для всех пользователей
tbl_GroupUser:
user_id, group_id
который представляет собой таблицу, содержащую пользователей и группы, они находятся в (каждая группа имеет более чем один user_id, и каждый пользователь имеет более одной группы).
tbl_group:
id, name
tbl_User:
id, age,....(information about the user)
Существует один ко многим отношений между идентификатором tbl_Group к GROUP_ID и между идентификатор tbl_User к user_id.
Я создал запрос, возвращающий процент групп, в котором для них есть только 2 пользователя, и мне нужен запрос, который возвращает результаты для всех пользователей. Это запрос, я сделал:.
SELECT cast((SELECT count(*) FROM
(SELECT user_id FROM tbl_GroupUser WHERE group_id in
(SELECT group_id FROM (SELECT t1.group_id, count(distinct t1.user_id) as numberOfUsers
FROM tbl_GroupUser as t1 JOIN tbl_GroupUser as t2 ON t1.group_id = t2.group_id group by
t1.group_id) y WHERE y.numberOfUsers = 2)) as x WHERE x.user_id = 'user') as decimal) * 100/
(SELECT count(*) FROM tbl_GroupUser WHERE user_id = 'user')
Это значит, рассчитывать все группы пользователь находится в том, что содержит 2 пользователей и разделить его на общее число групп пользователь находится в
Пример что я хочу:
tbl_GroupUser:
group_id | user_id
------------------
1 | 1
1 | 2
2 | 1
результаты:
user_id | p_Grp2
----------------
1 | 50.0
2 | 100.0
использовать обновленный ответ и отметьте, как полезно –