博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【原创】利用MySQL 的GROUP_CONCAT函数实现聚合乘法
阅读量:6148 次
发布时间:2019-06-21

本文共 1573 字,大约阅读时间需要 5 分钟。

MySQL 聚合函数里面提供了加,平均数,最小,最大等,但是没有提供乘法,我们这里来利用MYSQL现有的GROUP_CONCAT函数实现聚合乘法。

先创建一张示例表:

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://zalya.baihongyu.com/

你可能感兴趣的文章
Windows DHCP Server基于MAC地址过滤客户端请求实现IP地址的分配
查看>>
命令查询每个文件文件数
查看>>
《跟阿铭学Linux》第8章 文档的压缩与打包:课后习题与答案
查看>>
RAC表决磁盘管理和维护
查看>>
Apache通过mod_php5支持PHP
查看>>
发布一个TCP 吞吐性能测试小工具
查看>>
java学习:jdbc连接示例
查看>>
PHP执行批量mysql语句
查看>>
Extjs4.1.x 框架搭建 采用Application动态按需加载MVC各模块
查看>>
Silverlight 如何手动打包xap
查看>>
建筑电气暖通给排水协作流程
查看>>
JavaScript面向对象编程深入分析(2)
查看>>
linux 编码转换
查看>>
POJ-2287 Tian Ji -- The Horse Racing 贪心规则在动态规划中的应用 Or 纯贪心
查看>>
Windows8/Silverlight/WPF/WP7/HTML5周学习导读(1月7日-1月14日)
查看>>
关于C#导出 文本文件
查看>>
使用native 查询时,对特殊字符的处理。
查看>>
maclean liu的oracle学习经历--长篇连载
查看>>
ECSHOP调用指定分类的文章列表
查看>>
分享:动态库的链接和链接选项-L,-rpath-link,-rpath
查看>>