Я думаю, вы просто хотите условную агрегацию. Но я бы порекомендовал вам использовать left join
вместо right join
.
Тогда, я думаю, вы хотите count(distinct)
, чтобы считать пользователей, а не регистрировать записи ::
select u.department as DM,
count(distinct u.userid) as num_users,
count(distinct l.userlogid) as num_log_users,
count(distinct case when o.status = 1 then l.userlogid end) as num_status1_users
from allusers u left join
userlog l
on l.userlogid = u.USERID
group by o.department;
Возможно, вы хотите считать записи журнала, а не пользователей. Если это так, вы можете удалить distinct
:
select u.department as DM,
count(u.userid) as num_users,
count(l.userlogid) as num_log_users,
count(case when o.status = 1 then l.userlogid end) as num_status1_users
from allusers u left join
userlog l
on l.userlogid = u.USERID
group by o.department;