【原创】利用MySQL 的GROUP_CONCAT函数实现聚合乘法
2014-10-21 14:16
441 查看
MySQL 聚合函数里面提供了加,平均数,最小,最大等,但是没有提供乘法,我们这里来利用MYSQL现有的GROUP_CONCAT函数实现聚合乘法。
先创建一张示例表:
创建基于逗号分隔符的字符串乘法,前提是字符串逗号分隔的都是数字。
好了,我们利用我创建的函数以及MYSQL自带的GROUP_CONCAT聚合函数就可以很方便的实现乘法了。
本文出自 “上帝,咱们不见不散!” 博客,请务必保留此出处http://yueliangdao0608.blog.51cto.com/397025/1566281
先创建一张示例表:
CREATE TABLE `tb_seq` ( `num` int(10) NOT NULL, `seq_type` enum('yellow','green','red') NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8;插入示例数据:
insert into `tb_seq`(`num`,`seq_type`) values (4,'green'),(1,'red'),(3,'green'), (1,'red'),(8,'red'),(4,'yellow'), (8,'red'),(7,'yellow'),(10,'red'), (1,'red'),(1,'red'),(1,'yellow'), (5,'green'),(9,'red'),(1,'yellow'), (6,'yellow');
创建基于逗号分隔符的字符串乘法,前提是字符串逗号分隔的都是数字。
DELIMITER $$ USE `t_girl`$$ DROP FUNCTION IF EXISTS `func_multiple`$$ CREATE DEFINER=`root`@`localhost` FUNCTION `func_multiple`( f_nums VARCHAR(1000) ) RETURNS DOUBLE(10,2) BEGIN -- Created by ytt 2014/10/21. DECLARE result DOUBLE(10,2) DEFAULT 1; DECLARE cnt,i INT DEFAULT 0; SET cnt = CHAR_LENGTH(f_nums) - CHAR_LENGTH(REPLACE(f_nums,',','')) + 1; WHILE i < cnt DO -- get multiple result. SET result = result * REVERSE(SUBSTRING_INDEX(REVERSE(SUBSTRING_INDEX(f_nums,',',i+1)),',',1)); SET i = i + 1; END WHILE; SET result = ROUND(result,2); RETURN result; END$$ DELIMITER ;
好了,我们利用我创建的函数以及MYSQL自带的GROUP_CONCAT聚合函数就可以很方便的实现乘法了。
SELECT seq_type,func_multiple(GROUP_CONCAT(num ORDER BY num ASC SEPARATOR ',')) AS multiple_num FROM tb_seq WHERE 1 GROUP BY seq_type; +----------+--------------+ | seq_type | multiple_num | +----------+--------------+ | yellow | 168.00 | | green | 60.00 | | red | 5760.00 | +----------+--------------+ 3 rows in set (0.00 sec)
本文出自 “上帝,咱们不见不散!” 博客,请务必保留此出处http://yueliangdao0608.blog.51cto.com/397025/1566281
相关文章推荐
- 利用MySQL 的GROUP_CONCAT函数实现聚合乘法
- 利用MySQL 的GROUP_CONCAT函数实现聚合乘法
- PostgreSql实现mysql的group_concat的聚合操作
- MySQL的group_concat函数--实现查询结果 按列拼接
- 对字符串的“sum”——Oracle里实现类似MySQL group_concat函数
- SQLServer 中实现类似MySQL中的group_concat函数的功能
- [原创]MYSQL中利用外键实现级联删除和更新
- MySQL中的CONCAT、CONCAT_WS、GROUP_CONCAT函数,实现多行和多列的内容放在一个单元格内
- [原创]Asp.net2.0下利用Global.asax全局文件实现流量分析
- 利用javascript实现可视化数据备份[原创]
- .net利用IOleCommandTarget接口实现Html编辑器表格边框的显示和隐藏(原创)
- 利用MySQL自带的C API函数实现数据库功能调用
- 【原创源码】(03):利用简单递归算法,实现文本匹配、翻译。
- 【原创】 利用sqlserver2005新特性 实现高效存储过程分页
- 【原创】利用ajax技术实现动态双组合功能
- asp.net利用RAR实现文件压缩解压缩【月儿原创】
- asp.net利用RAR实现文件压缩解压缩【月儿原创】
- PHP 分页的实现的理论基础---MySQl的limit语句和count(*)语句 [原创]
- 利用MySQLDriverCS实现在.NET环境下访问MySQL数据库
- [原创]文本编辑中利用栈来实现undo和redo的无限次操作