我正在建立一个评级系统。我有两个表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
答案 0 :(得分:2)
我想你的错误就在这里:
ON hindamine.hindamine_id = aine_tudeng.aine_id
hindamine (评估/评级?)与 aine (主题?)有所不同,因此您加入这些ID时会出错。
(我使用谷歌翻译来帮助我理解其含义。)