Показать пользователей, которые еще не создали проекты в этом месяце (count = 0) - PullRequest
1 голос
/ 20 мая 2019

Сейчас я показываю количество проектов (projectName), открытых каждым пользователем (userName)

SELECT COUNT(projectName) AS "Nombre de projets", userName AS "Nom de l'utilisateur"
FROM projects
WHERE MONTH(date) = MONTH(CURRENT_DATE())
AND YEAR(date) = YEAR(CURRENT_DATE())
GROUP BY userName
ORDER BY COUNT(projectName) DESC

Я хотел бы отобразить пользователей, которые еще не создали проекты в этом месяце.

Я пробовал на нескольких примерах "присоединиться", но мне чего-то не хватает.

Не могли бы вы мне помочь?

Спасибо

1 Ответ

1 голос
/ 20 мая 2019

Одним из вариантов будет таблица календаря с подходом против объединения:

SELECT u.userName
FROM (SELECT DISTINCT userName FROM projects) u
LEFT JOIN projects p
    ON u.userName = p.userName AND
       MONTH(p.date) = MONTH(CURRENT_DATE()) AND
       YEAR(p.date) = YEAR(CURRENT_DATE())
WHERE
    p.userName IS NULL;

Предполагается, что у вас нет выделенной таблицы, содержащей все имена пользователей. Вместо этого мы можем использовать саму таблицу projects в качестве источника правды для всех пользователей. Обратите внимание, что нам здесь не нужно никакого рода агрегирование, потому что мы просто проверяем, существует ли хотя бы одна запись для данного пользователя в текущем месяце и году, что будет свидетельством того, что пользователь создал проект.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...