gpt4 book ai didi

sql - 使用 2 个 ORDER BY 语句的 COUNT 中没有零值

转载 作者:行者123 更新时间:2023-11-29 12:44:18 25 4
gpt4 key购买 nike

我有 3 个表:

+---------+    +----------+    +----------+
| kkw | | block | | status |
+---------+ +----------+ +----------+
| kkw_id | | block_id | |status_id |
| land_id | | kkw_id | | .... |
| ... | | status_id| | .... |
+---------+ +----------+ +----------+

我想显示每个国家(land_id)和状态的 block 数,如果一个国家没有与状态对应的 block ,则为零。我尝试了这个请求,但没有显示零值:

SELECT s.status_id, k.land_id, COUNT(b.block_id)
FROM kkw_status AS s
LEFT JOIN block AS b ON s.status_id = b.status_id
LEFT JOIN kkw AS k ON b.kkw_id=k.kkw_id
GROUP BY s.status_id, k.land_id
ORDER BY k.land_id, s.status_id;

结果:

status_id   land_id count
1 1 2
4 1 3 ....

但我想:

status_id   land_id count
1 1 2
2 1 0
3 1 0
4 1 3 .....

有什么想法吗?谢谢

最佳答案

您正在按 k.land_id 分组。因此,当某些内容不匹配时,它会为该列获取 NULL 值。因此,零值只会出现在此类行上。

如果您想要所有的 status_idland_id,那么使用 cross join 创建一个包含所有这些的列表,然后计算数量匹配每个组。我认为这就是查询的样子:

SELECT s.status_id, k.land_id, COUNT(b.block_id)
FROM kkw_status s CROSS JOIN
kkw k LEFT JOIN
block b
ON b.status_id = s.status_id AND b.kkw_id = k.kkw_id
GROUP BY s.status_id, k.land_id
ORDER BY k.land_id, s.status_id;

关于sql - 使用 2 个 ORDER BY 语句的 COUNT 中没有零值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33300414/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com