MySQL - 如何计算空值和非空值?

标签 mysql sql group-by isnull notnull

我有一个简单的安装量表:

  • prod_code
  • 电子邮件
  • 安装槽

如果 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` = 'example@example.com'
GROUP BY
    i1.`prod_code`,i2.`prod_code`

最佳答案

SELECT prod_code,
       COUNT(email) AS total_installs,
       COUNT(install_slot) AS used_installs
FROM installs
WHERE email='example@example.com'
GROUP BY prod_code

COUNT 仅计算 NOT NULL 值。

关于MySQL - 如何计算空值和非空值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9245038/

相关文章:

php - 如何从表 X 中选择与表 Y 共享最少关系的行?

python - 计算按特定列分组的项目之间的平均时间差

mysql - 地理位置字符串sql中的变量

php - 使用 PHP 的购物车

sql - 对于列定义为 NUMBER(4,2) 的值 100,插入失败

sql - 在 RETURNING 语句中使用记录作为函数参数

Javascript - 在Group-by之后将一个数组转换为两个数组

php - 我需要一个 mysql group by query 以在每个员工的一行中从每个员工的日期时间列返回每小时条目

mysql - 如何获得连接的对立面?

php - 如何将我的 php 文件转换为 utf8?