Вывести пользователей, не создавших ни одного поста (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
  1. LEFT JOIN
  2. Условие 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
→ Ссылка