Mysql 计算函数参数的平均值
Mysql calculate the average of a function's parameter
这里有一个函数来描述我的问题:
CREATE DEFINER=`root`@`localhost` FUNCTION `Demo`(`data` Integer) RETURNS int(11)
BEGIN
declare result integer;
set result = avg(`data`);
return result;
RETURN 1;
END
参数 data
是其他 select 结果的一整列,看起来像:
10
12
15
...
我想用这个函数计算data
的平均值,但它只显示:
Error Code: 1111. Invalid use of group function
看来avg函数的使用方法不对,count()等其他函数也有同样的问题,但我找不到实现我目的的方法,有没有办法做那个?
计算单个值的平均值是没有意义的。单个值的平均值与最小值相同,与最大值相同,这些都等于单个值本身。
很难说出您打算使用此功能做什么。如果您想在查询中使用它,您可以在查询的每一行上使用它时计算其结果的平均值:
SELECT AVG(Demo(data)) FROM MyTable;
或者你可以使用函数查询一些table和return多行的平均值。但是你不需要传递任何函数参数。
CREATE FUNCTION Demo() RETURNS INT
BEGIN
DECLARE result INT;
SET result = (SELECT AVG(`data`) FROM MyTable);
RETURN result;
END
你必须给它传递一个数组。
CREATE DEFINER=`root`@`localhost` FUNCTION `Demo`(a_array IN my_integer_array) RETURNS int(11)
BEGIN
FOR i IN a_array.first..a_array.last LOOP
set result = a_array(i);
return result;
END LOOP;
RETURN 1;
END
这里有一个函数来描述我的问题:
CREATE DEFINER=`root`@`localhost` FUNCTION `Demo`(`data` Integer) RETURNS int(11)
BEGIN
declare result integer;
set result = avg(`data`);
return result;
RETURN 1;
END
参数 data
是其他 select 结果的一整列,看起来像:
10 12 15 ...
我想用这个函数计算data
的平均值,但它只显示:
Error Code: 1111. Invalid use of group function
看来avg函数的使用方法不对,count()等其他函数也有同样的问题,但我找不到实现我目的的方法,有没有办法做那个?
计算单个值的平均值是没有意义的。单个值的平均值与最小值相同,与最大值相同,这些都等于单个值本身。
很难说出您打算使用此功能做什么。如果您想在查询中使用它,您可以在查询的每一行上使用它时计算其结果的平均值:
SELECT AVG(Demo(data)) FROM MyTable;
或者你可以使用函数查询一些table和return多行的平均值。但是你不需要传递任何函数参数。
CREATE FUNCTION Demo() RETURNS INT
BEGIN
DECLARE result INT;
SET result = (SELECT AVG(`data`) FROM MyTable);
RETURN result;
END
你必须给它传递一个数组。
CREATE DEFINER=`root`@`localhost` FUNCTION `Demo`(a_array IN my_integer_array) RETURNS int(11)
BEGIN
FOR i IN a_array.first..a_array.last LOOP
set result = a_array(i);
return result;
END LOOP;
RETURN 1;
END