将CASE行乘以不同的值

时间:2017-10-20 11:10:01

标签: mysql sql

我正在建立一个评级系统。我有两个表hinne(评级)和hinnang(评级乘数)。我需要将评分相乘,然后对评分进行平均,以便了解aine(主题)所有评分中的评分。

示例:

所有点都需要在0-100点系统中计算。

因此,如果我的第一个费率为25且评级乘数为4,那么第一个费率(25/25)

4*25=100

如果第二个比率为30且乘数2则为第二个比率(30/50)

2*30=60

现在我需要像100+60/2=80一样平均它们。

这应该适用于我的SQL语句,但我遇到了麻烦。

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

所以,这是我的支点案例陈述。每个hinne.tulemus hindamine.kaal 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

1 个答案:

答案 0 :(得分:2)

我想你的错误就在这里:

ON hindamine.hindamine_id = aine_tudeng.aine_id

hindamine (评估/评级?)与 aine (主题?)有所不同,因此您加入这些ID时会出错。

(我使用谷歌翻译来帮助我理解其含义。)