gpt4 book ai didi

mysql - 使用 LEFT JOIN、SUM() 和 HAVING() 选择 COUNT()

转载 作者:行者123 更新时间:2023-11-29 03:59:37 35 4
gpt4 key购买 nike

我这里有这张 table http://sqlfiddle.com/#!9/9d9f56/1/0

我不断得到不止一行值 4 而不是我应该得到的实际 COUNT(),这是 3,即使我将分数提高到 67COUNT 也一直到 4 有多个行而不是单个。

我添加了 SUM(b.score) AS score 将其定义为 变量 然后我使用了 HAVING score > 0首先要获得实际的 COUNT,如何解决这个问题并获得具有实际计数的单个 COUNT 行?

我期望的是包含得分 > 0 的实际计数的单行,即 3

我所做的是获取每个 namescoresSUM(),Name N1 具有id/nid = 1 的总分是 (10),当我将 score > 0 更改为 score > 9 我应该只得到 1 个值为 > 9

的名字
N1(nid=1) (b.score SUM=10),
N2(nid=2) (b.score SUM=8),
N3(nid=3) (b.score SUM=6)

所以 HAVING score > 0 应该给我 COUNT(a.id) = 3HAVING score > 9 应该给我 COUNT(a.id) = 1

最佳答案

根据相关的新信息进行编辑:

这解释了原因:

select a.id, COUNT(*), SUM(b.score) AS score
FROM names a
LEFT JOIN scores b ON b.nid = a.id
GROUP BY a.id
HAVING score > 0

你是在a.id上分组,但是因为你没有输出它,所以它看起来像重复的。

这是你需要的:

select COUNT(distinct a.id)
FROM names a
INNER JOIN scores b ON b.nid = a.id
WHERE score > 0

关于mysql - 使用 LEFT JOIN、SUM() 和 HAVING() 选择 COUNT(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48667875/

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