【发布时间】:2016-06-14 20:38:35
【问题描述】:
我使用 sql server 并且我有表格:
tbl_GroupUser:
user_id, group_id
这是一个包含用户及其所在组的表(每个组有多个 user_id,每个用户有多个组)。
tbl_group:
id, name
tbl_User:
id, age,....(information about the user)
tbl_Group 的 id 与 group_id 以及 tbl_User 的 id 与 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
【问题讨论】:
-
使用更新的答案并标记为有帮助
标签: sql sql-server