Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 无零计数_Mysql_Sql - Fatal编程技术网

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:你能重新表述一下你最后的评论吗?我不明白。