2017-10-20 7 views
0

評価システムを作成しています。私は2つのテーブルhinne(定格)とhinnang(定格倍率)を持っています。評価を倍加して、評価を平均して、すべての評価から何の評価を得たのかをaine(件名)で知る必要があります。異なる値のCASE行を掛けて

例:

すべてのポイントは0-100ポイントシステムで計算する必要があります。

だから、私の最初のレートが25であり、第二の速度は、乗算器2、第2の速度(30/50)

30であり、そして場合の評価の乗算器は4最初率(25/25)

4*25=100 

ある場合

2*30=60 

ここでは平均を100+60/2=80のようにする必要があります。

私のSQLステートメントではうまくいくはずですが、問題が発生しました。

CASE 
      WHEN aine.nimetus = 'Füüsika I' 
      THEN hinne.tulemus * hindamine.kaal 
      ELSE 0 
      END 
      ,0) 
     )) 

これは私のピボットケースのステートメントです。 hindamine.kaalは、それぞれのhinne.tulemus 25*4,50*2に対して異なる値にする必要がありますが、動作しません。それは単に乗数の値4を使用します。私はこの作業をどのようにすることができますか?

  • SQLの結果に:150

  • が期待される結果:100したがって

ここでは、私の完全なSQLです:

SELECT 
    tudeng.m_number,hindamine.kaal, ROUND(AVG(NULLIF(
      CASE 
      WHEN aine.nimetus = 'Füüsika I' 
      THEN hinne.tulemus * hindamine.kaal 
      ELSE 0 
      END 
      ,0) 
     )) 
     AS FüüsikaI ,ROUND(AVG(NULLIF(
      CASE 
      WHEN aine.nimetus = 'Kõrgem matemaatika I' 
      THEN hinne.tulemus * hindamine.kaal 
      ELSE 0 
      END 
      ,0) 
     )) 
     AS KõrgemmatemaatikaI ,ROUND(AVG(NULLIF(
      CASE 
      WHEN aine.nimetus = 'Raalprojekteerimine' 
      THEN hinne.tulemus * hindamine.kaal 
      ELSE 0 
      END 
      ,0) 
     )) 
     AS Raalprojekteerimine ,ROUND(AVG(NULLIF(
      CASE 
      WHEN aine.nimetus = 'Tehniline graafika' 
      THEN hinne.tulemus * hindamine.kaal 
      ELSE 0 
      END 
      ,0) 
     )) 
     AS Tehnilinegraafika , ROUND(AVG(NULLIF(
      CASE 
       WHEN aine.nimetus = 'Ettevõteluse alused' 
       THEN hinne.tulemus * hindamine.kaal 
       ELSE 0 
      END 
      ,0) 
      )) 
      AS Ettevõtelusealused 
FROM 
tudeng 

INNER JOIN 
aine_tudeng 
ON 
tudeng.tudeng_id = aine_tudeng.tudeng_id 

INNER JOIN 
aine 
ON 
    aine.aine_id = aine_tudeng.aine_id 

INNER JOIN 
hinne 
ON 
hinne.aine_tudeng_id=aine_tudeng.aine_tudeng_id 

INNER JOIN 
    hindamine 
ON 
    hindamine.hindamine_id=aine_tudeng.aine_id 

GROUP BY 
tudeng.m_number 
+0

私はMySQLサーバ – Godhaze

+1

私は最初の文の後に失われてしまったを使用しています:) –

答えて

2

私はあなたのエラーはここにあると仮定:

ON hindamine.hindamine_id = aine_tudeng.aine_id 

ヒンダミン(評価/評価?)はaine(subject?)とは異なるので、これらのIDでの参加に間違いがあります。

(私は意味で私を助けるために、Googleの翻訳を使用しています。)

関連する問題