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`
I have a simple table of installs:
- prod_code
- install_slot
If the install_slot is NULL, then it's an available install slot. Not null -- then, used slot. I need to return a result of total installs for a given product and email, as well as a result of used installs for a given product and email. I guess I could do this with two queries, but wondered if there's a SQL way to do it all in one?
I tried the following as a wild guess, but it didn't work.
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`
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
COUNT
仅计算NOT NULL
值。COUNT
countsNOT NULL
values only.提供的解决方案对我不起作用。我必须修改如下:
The solution offered did not work for me. I had to modify as follows: