Помогите пожалуйста с задачей
Нам даны 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 шт):
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; -- Фильтруем пользователей без комментариев
Пример как для решения с использованием левого соединения