2

正しく動作するクエリがありますが、どこを変更したいですか。
クエリは のすべてのメモをカウントしますid_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 のように 1 人あたり 2 つのメモを与えることができます。

私の例では、2 人の人物がいます。
Bio Part1 では両方に注記 "3" を付け、Bio Part2 では注記を付けていないため、注記 "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」を取得するにはどうすればよいですか

誰でもアイデアはありますか?

4

1 に答える 1