6

我有一个包含几列的表:column_1、column_2 和column_3。

我在名为 score 的表中添加了一个新列。我想要做的是根据这三列计算分数并轻松调整参数。

假设我的分数公式如下所示:

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 回答