Помогите пожалуйста с задачей

Нам даны 2 таблицы:

Колонки таблицы user_comments: «id» — идентификатор комментария. «publication_id» — идентификатор публикации, под которой оставлен комментарий. «user_id» — идентификатор пользователя, который оставил данный комментарий. «time_posted» — момент времени, когда пользователь оставил данный комментарий под публикацией. «reply_to» — идентификатор комментария, на который данный комментарий является ответом. Если комментарий не является ответом ни на какой другой комментарий, то значение в колонке считается пропущенным. Колонки таблицы users:

«id» — идентификатор пользователя на платформе. «gender» — пол пользователя. «birthday» — дата рождения пользователя.

Реализуйте запрос, возвращающий количество уникальных пользователей без комментариев в таблице user_comments, не используя оператор in, но используя левое (или правое) соединение.

Единственную колонку таблицы, которая получится в результате исполнения запроса, назовите users_cnt.

Пробовал такое решение:

with p as(
  select *
  from user_comments uc
    left join users u
    on uc.user_id = u.id
)
select 
  count(distinct(id))
from p

Выдаёт ошибку

column reference "id" is ambiguous LINE 8: count(distinct(id))


Ответы (1 шт):

Автор решения: Lith
SELECT COUNT(DISTINCT u.id) AS users_cnt
FROM users u
LEFT JOIN user_comments uc ON u.id = uc.user_id
WHERE uc.id IS NULL;  -- Фильтруем пользователей без комментариев

Пример как для решения с использованием левого соединения

→ Ссылка