Mysql 无零计数
我有一个正确工作的查询,但我想在哪里进行更改。Mysql 无零计数,mysql,sql,Mysql,Sql,我有一个正确工作的查询,但我想在哪里进行更改。 该查询统计id\u service=89的所有注释 注释是介于0和3之间的数字,而不是更多。 我的查询计算所有这些笔记的平均值。 一切正常 我想要的变化是,他只计算1到3之间的音符(不是0)。 我不知道我怎么能做到 例如: 此查询计算我在所有条件下获得数字3的时间。 以下是查询: SELECT round( avg( AVG =3 ) * count( AVG ) ) AS New , sma_famille.famille FROM (
该查询统计
id\u service=89
的所有注释注释是介于0和3之间的数字,而不是更多。
我的查询计算所有这些笔记的平均值。
一切正常 我想要的变化是,他只计算1到3之间的音符(不是0)。
我不知道我怎么能做到 例如: 此查询计算我在所有条件下获得数字3的时间。
以下是查询:
SELECT round( avg( AVG =3 ) * count( AVG ) ) AS New
, sma_famille.famille
FROM (
SELECT ROUND( SUM( note ) / count( note ) ) AS AVG
, sma_famille.famille
, sma_agents.nom
FROM sma_notes
INNER JOIN sma_famille
ON sma_famille.id_service =89
INNER JOIN sma_agents
ON sma_notes.id_agent = sma_agents.id_agent
INNER JOIN sma_service_activite
ON sma_service_activite.id_activite = sma_notes.id_activite
AND sma_service_activite.id_famille = sma_famille.id_famille
AND sma_service_activite.id_service = sma_famille.id_service
GROUP BY sma_famille.famille, sma_agents.nom
) AS FN
LEFT JOIN sma_famille
ON sma_famille.id_service =89
AND FN.famille = sma_famille.famille
GROUP BY FN.famille
例如:在Bio中,我可以给每个人两张便条,比如Bio Part1和Bio Part2 在我的例子中,我有两个人。
我在Bio第1部分中给出了两个注释“3”,在Bio第2部分中我没有给出注释,因此有注释“0” 下面是我的查询结果: 这就是我得到的:
Note Math English Bio
1 0 0 0
2 0 0 2
3 0 0 0
这就是我想要的:
Note Math English Bio
1 0 0 0
2 0 0 0
3 0 0 2
如果没有注释“0”,则注释“3”的平均值必须为100%
现在我得到:
Note Math English Bio
1 0
2 0
3 2
而不是
Note Math English Bio
1 0 0 0
2 0 0 0
3 0 0 2
如何获取结果集中的“0”
有人有主意吗 获得值计数>0的一种方法是:
count(case when note > 0 then note end)
(如果note为0,则案例的计算结果为null,不计入。)
虽然最简单的方法可能是
sum(sign(note))
您能给出示例记录吗?听起来您大概想要
HAVING
子句。您好,谢谢。回答我的问题,我用一个更好的例子编辑了我的问题。您提供的输出的结构与您提供的查询的结构不匹配。换言之:您无法从该查询中获得该输出。好的,非常感谢您提供的解决方案!!!是的,很好,但我如何才能为结果集中的其他人获得“0”?现在我得到空值。THX@achilix:你能重新表述一下你最后的评论吗?我不明白。