6

column_1、column_2、および column_3 といういくつかの列を含むテーブルがあります。

スコアというテーブルに新しい列を追加しました。私がやりたいことは、これら 3 つの列に基づいてスコアを計算し、パラメーターを簡単に調整することです。

私のスコア式が以下のようになっているとします。

score = a * column_1 + b * column_2 + c * column_3

それを簡単に行うためにudfまたはプロセス(これまで使用されたことがない)を作成することは可能ですか?

getScore(a,b,c) のような関数があり、次のようなことができます。

select 
    column_1,
    column_2, 
    column_3, 
    getScore(0.5, 0.1, 0.4) as score
from table

また

update table set score = getScore(0.5, 0.1, 0.4)

ありがとう!

4

1 に答える 1

18

はい。

CREATE FUNCTION `getScore`(`a` DECIMAL(12,4), `b` DECIMAL(12,4), `c` DECIMAL(12,4)) RETURNS DECIMAL(12,4)
BEGIN
    RETURN a + b + c;
END

SELECT getScore(0.3, 0.4, 0.5)
-> 1.2000

ただし、テーブルの値が必要な場合は、それらもパラメーターとして含める必要があります。

SELECT getScore(column1, column2, column3, 0.5, 0.1, 0.4) AS score FROM table
于 2013-09-04T16:17:23.767 に答える