[英]MySQL function to calculate percentile
I'm trying to script a mysql function to calculate my percentiles.我正在尝试编写 mysql function 脚本来计算我的百分位数。 My code:我的代码:
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
When I try to call it I get the error:当我尝试调用它时,我得到了错误:
Error Code: 1265. Data truncated for column schema.percentile('table', 'column')
I can't figure out the source of the error.我无法弄清楚错误的来源。 Any solutions?有什么解决办法吗?
You can write a PROCEDURE:你可以写一个PROCEDURE:
CREATE DEFINER=`root`@`localhost`
PROCEDURE `sp_percentile`(tbl_name VARCHAR(2555),col_name VARCHAR(5000))
BEGIN SET @sql = 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);');
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.