Вывести пользователей, не создавших ни одного поста (StackExchange)
Вот условие:
"Составить запрос к БД stackoverfow. Результат запроса должен содержать список 10 первых пользователей, которые не создали ни одного поста. Схему (список колонок) запроса определите самостоятельно. Сортировка строк также не требуется. Пусть это будут 10 случайно отобранных пользователей, не создавших ни одного поста. Для составления запроса обязательно требуется использовать операцию join"
Вот вариант решения, который не возвращает ни одной строки (при HAVING > 0 - работает):
SELECT TOP 100 USERS.ID, USERS.DISPLAYNAME, COUNT(POSTS.ID)
FROM POSTS
JOIN USERS ON USERS.ID = POSTS.OWNERUSERID
GROUP BY USERS.ID, USERS.DISPLAYNAME, POSTS.POSTTYPEID
HAVING POSTS.POSTTYPEID = 1 AND COUNT(POSTS.ID) = 0
Ответы (1 шт):
Автор решения: vp_arth
→ Ссылка
- LEFT JOIN
- Условие
POSTTYPEID=1отсекает тех, у кого null
SELECT TOP 100 USERS.ID, USERS.DISPLAYNAME, COUNT(POSTS.ID)
FROM USERS
LEFT JOIN POSTS ON USERS.ID = POSTS.OWNERUSERID
WHERE POSTS.ID IS NULL OR POSTS.POSTTYPEID = 1
GROUP BY USERS.ID, USERS.DISPLAYNAME, POSTS.POSTTYPEID
HAVING COUNT(POSTS.ID) = 0