DELIMITER $$ CREATE DEFINER=`root`@`localhost` PROCEDURE `distinctinstanceoverall`(IN `db` VARCHAR(64) CHARSET utf8, IN `tbl` VARCHAR(64) CHARSET utf8, IN `col` VARCHAR(64) CHARSET utf8) EXECUTE IMMEDIATE CONCAT( 'SELECT ',col,', COUNT(*) AS Number, ROUND((COUNT(*) * 100 / SUM(COUNT(*)) OVER()),1) AS Percent FROM ',db,'.',tbl,' GROUP BY (CAST(',col,' AS CHAR CHARACTER SET utf8) COLLATE utf8_bin) ORDER BY Percent DESC' )$$ DELIMITER ;