从 MySQL 中加入的 table 计算空值

Count null from joined table in MySQL

我需要从加入 MySQL 的 2 table 中计算 NULL。示例数据如下:

datefield FROM TABLE calendar (contain dates from start to end of this year)
-----------
TABLE value (data stored)
+------------+-------+
| date       | keter |
+------------+-------+
| 2021-08-01 |    11 |
| 2021-08-04 |     0 |
| 2021-08-07 |    20 |
| 2021-08-08 |    15 |
| 2021-08-11 |     0 |
+------------+-------+

我正在使用以下查询来合并和显示来自日历和值 tables 的数据。

SELECT datefield,keter FROM calendar 
LEFT JOIN kehadiran ON datefield=tgl AND id_kar IN ('110101') 
WHERE datefield BETWEEN '2021-08-01' AND '2021-08-15' GROUP BY datefield;

result :
+------------+-------+
| datefield  | keter |
+------------+-------+
| 2021-08-01 |    11 |
| 2021-08-02 |  NULL |
| 2021-08-03 |  NULL |
| 2021-08-04 |     0 |
| 2021-08-05 |  NULL |
| 2021-08-06 |  NULL |
| 2021-08-07 |    20 |
| 2021-08-08 |    15 |
| 2021-08-09 |  NULL |
| 2021-08-10 |  NULL |
| 2021-08-11 |     0 |
| 2021-08-12 |  NULL |
| 2021-08-13 |  NULL |
| 2021-08-14 |  NULL |
| 2021-08-15 |  NULL |
+------------+-------+

我根据这个问题()使用查询,没有得到我想要的结果。查询是这样的:

SELECT SUM(k.keter) FROM kehadiran k 
LEFT OUTER JOIN calendar c ON c.datefield = k.keter AND id_kar IN ('110101') 
WHERE datefield BETWEEN '2021-08-01' AND '2021-08-12' AND k.keter is NULL;

result:
+--------------+
| SUM(k.keter) |
+--------------+
|         NULL |
+--------------+

the result i wanted :
+--------------+
| SUM(k.keter) |
+--------------+
|           10 |
+--------------+

我应该如何从上面提到的连接table中计算NULL?

您在查询中总结了 NULL。 NULL 的总和为 NULL。您应该将 SUM(k.keter) 替换为 COUNT(k.keter)

See 举个小例子

要计算 NULL 秒,您可以使用:

SUM(k.keter IS NULL)

或者:

COUNT(*) - COUNT(k.keter)

您在上次不正确的查询中交换了表。使用有效的查询并使用 COUNT(*)WHERE right_table.any_notnull_column IS NULL:

SELECT COUNT(*)
FROM calendar 
LEFT JOIN kehadiran k ON datefield=tgl AND id_kar IN ('110101')
WHERE datefield BETWEEN '2021-08-01' AND '2021-08-15'
AND k.keter is NULL