我的问题是这个;几个安全组每个都有几个用户,用户可以在许多安全组中。
我正在尝试编写一个查询,列出每个安全组的名称,后跟该组中每个用户的数量。 (成功完成该部分)我遇到问题的部分是我只想计算每个用户一次。因此,如果用户在A,B,C组中,他应该只计入第一组(无论他被计入哪个都无关紧要。
以下是第一部分正常工作的基本代码:
select
/*count(distinct um.user_id),*/ sg.group_name as 'Security Group',
COUNT(sg.group_name) as 'Total Users'
from
user_mstr um
join
user_group_xref ug on ug.user_id = um.user_id
join
security_groups sg on sg.group_id = ug.group_id
group by
sg.group_name, um.user_id
答案 0 :(得分:0)
这是基于数据模型中的假设,特别是user_group_xref表,但不是返回完整的外部参照,它将返回每个user_id和它们所在的min group_id。我试图保留代码。和你的榜样一样。
select /*count(distinct um.user_id),*/ sg.group_name as 'Security Group',
COUNT(um.user_id) as 'Total Users'
from security_groups sg
left outer join (select user_id, min(group_id) group_id from user_group_xref group by USER_ID) ug on sg.group_id = ug.group_id
left outer join user_mstr um on ug.user_id = um.user_id
group by sg.group_name