評価システムを作成しています。私は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
私はMySQLサーバ – Godhaze
私は最初の文の後に失われてしまったを使用しています:) –