Ну, было бы достаточно легко найти пользователя, который не является администратором, но является писателем и читателем, но затем немного сложнее получить запрос на добавление роли администратора для этого пользователя ...
SELECT USER.NAME, COUNT(USER.NAME) AS NUM_ROLES
FROM USER
JOIN USERGROUP ON USER.GROUPID = USERGROUP.GROUPID
JOIN ROLE ON ROLE.ROLEID = USERGROUP.ROLEID AND ROLE.NAME IN ('Writer', 'Reader')
GROUP BY USER.NAME
ORDER BY 2 DESC
OR
SELECT A.* FROM
(SELECT USER.NAME, COUNT(USER.NAME) AS NUM_ROLES
FROM USER
JOIN USERGROUP ON USER.GROUPID = USERGROUP.GROUPID
JOIN ROLE ON ROLE.ROLEID = USERGROUP.ROLEID
GROUP BY USER.NAME) AS A
WHERE A.NUM_ROLES > 1
ORDER BY A.NUM_ROLES DESC
Если вам нужно исключить роль администратора, вы можете изменить следующую строку:
JOIN ROLE ON ROLE.ROLEID = USERGROUP.ROLEID AND ROLE.NAME <> 'Admin'