【发布时间】:2021-03-21 10:17:38
【问题描述】:
我正在尝试编写一个 mysql 函数来计算我的百分位数。 我的代码:
CREATE DEFINER=`root`@`localhost` FUNCTION `percentile`(tbl_name VARCHAR(255),col_name VARCHAR(255)) RETURNS double(10,2)
READS SQL DATA
DETERMINISTIC
BEGIN
RETURN CONCAT('SELECT `',col_name,'` FROM
(SELECT t.*, @row_num :=@row_num + 1 AS row_num FROM `',tbl_name,'` t,
(SELECT @row_num:=0) counter ORDER BY `',col_name,'`)
temp WHERE temp.row_num = ROUND (0.75* @row_num);');
END
当我尝试调用它时,我得到了错误:
Error Code: 1265. Data truncated for column schema.percentile('table', 'column')
我无法找出错误的来源。有什么解决办法吗?
【问题讨论】:
-
您的计算值是一个字符串(例如字符串“select ...”,而不是该查询的结果),将其作为 double(10,2) 返回将不匹配。您可能正在寻找dynamic query
标签: mysql function percentile