编写纯sql函数

时间:2014-11-16 23:27:52

标签: sql function postgresql

我正在尝试编写一个纯SQL函数,该函数接收2个参数,这些参数对应于获胜的数量并绘制了团队所获得的数据。这是我想写的函数的实际定义。

  

编写一个名为calc points total的纯SQL(即不是PL / pgSQL函数)函数        两个参数对应于团队获得的获胜和抽奖数量。这个功能        应根据上面公式1中的公式返回获得的总分数。

我用于此功能的等式是

3 · wins + draws

我之前没有在sql中写过任何函数,所以我在网上查了一下,但是我发现并编写了我的代码并不正确。这是我到目前为止编写的代码,但我认为它不起作用。

CREATE OR REPLACE FUNCTION calc_points_total(integer, integer)
RETURN integer AS $$
    SELECT $1 :: ((3 * $1) + $2) AS result;
$$ LANGUAGE SQL

我正在使用的表是

Table "lab10.group_standings" 
Column | Type | Modifiers
--------+-----------------------+-----------
team | character varying(25) | not null
wins | smallint | not null
losses | smallint | not null
draws | smallint | not null
points | smallint | not null
Indexes:
"group_standings_pkey" PRIMARY KEY, btree (team)
Check constraints:
"group_standings_draws_check" CHECK (draws >= 0)
"group_standings_losses_check" CHECK (losses >= 0)
"group_standings_points_check" CHECK (points >= 0)
"group_standings_wins_check" CHECK (wins >= 0)

1 个答案:

答案 0 :(得分:2)

PostgreSQL CREATE FUNCTION语法记录在案here。它应该是:

CREATE FUNCTION calc_points_total(win INTEGER, draw INTEGER) RETURNS INTEGER
AS $$ SELECT (3 * win) + draw $$
LANGUAGE SQL;