gpt4 book ai didi

mysql - 将 CASE 行与不同的值相乘

转载 作者:行者123 更新时间:2023-11-29 06:52:36 26 4
gpt4 key购买 nike

我正在创建一个评级系统。我有两个表 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)
))

所以,这是我的关键案例陈述。 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

最佳答案

我想你的错误在这里:

ON hindamine.hindamine_id = aine_tudeng.aine_id

hindamine(评估/评级?)与aine(主题?)不同,因此您错误地加入了这些 ID。

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

关于mysql - 将 CASE 行与不同的值相乘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46847889/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com