MySQL - как мне подсчитывать нули, а не нули?

У меня есть простая таблица установок:

  • prod_code
  • электронная почта
  • install_slot

Если значение install_slot равно NULL, то это доступный слот для установки. Не нулевой - тогда, используемый слот. Мне нужно вернуть результат полной установки для данного продукта и электронной почты, а также результат использования установок для данного продукта и электронной почты. Думаю, я мог бы сделать это с двумя запросами, но задавался вопросом, есть ли способ SQL для всего этого в одном?

Я пробовал следующее как дикое предположение, но не работал.

SELECT
    i1.`prod_code`,
    COUNT(i1.`email`) AS total_installs,
    COUNT(ISNULL(i2.`install_slot`)) AS used_installs
FROM
    `installs` AS i1
JOIN
    `installs` AS i2
ON
    i1.`prod_code` = i2.`prod_code`
WHERE
    i1.`email` = '[email protected]'
GROUP BY
    i1.`prod_code`,i2.`prod_code`

Ответ 1

SELECT prod_code,
       COUNT(email) AS total_installs,
       COUNT(install_slot) AS used_installs
FROM installs
WHERE email='[email protected]'
GROUP BY prod_code

COUNT учитывает только значения NOT NULL.

Ответ 2

Предлагаемое решение не сработало для меня. Мне пришлось изменить следующим образом:

SELECT prod_code,
       COUNT(NULLIF(email,'')) AS total_installs,
       COUNT(NULLIF(install_slot,'')) AS used_installs
FROM installs
WHERE email='[email protected]'
GROUP BY prod_code