利用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)
利用MySQL 的GROUP_CONCAT函数实现聚合乘法的更多相关文章
- MySQL中group_concat函数-和group by配合使用
MySQL中group_concat函数 完整的语法如下: group_concat([DISTINCT] 要连接的字段 [Order BY ASC/DESC 排序字段] [Separator '分隔 ...
- MySQL中group_concat函数深入理解
本文通过实例介绍了MySQL中的group_concat函数的使用方法,比如select group_concat(name) . 一.MySQL中group_concat函数 完整的语法如下: gr ...
- MySQL中group_concat函数
本文通过实例介绍了MySQL中的group_concat函数的使用方法,比如select group_concat(name) .MySQL中group_concat函数完整的语法如下:group_c ...
- mysql之group_concat函数
mysql之group_concat函数 在介绍GROUP_CONCAT之前,我们先来看看concat()函数和concat_ws()函数. 先准备一个测试数据库: mysql> select ...
- 【转】mysql的group_concat函数,默认最大长度是1024
mysql的group_concat函数,默认最大长度是1024 查询sql: show variables like 'group_concat_max_len'; 设置方式: 修改配置文件my.i ...
- MySQL中group_concat函数 --- 很有用的一个用来查询出所有group by 分组后所有 同组内的 内容
本文通过实例介绍了MySQL中的group_concat函数的使用方法,比如select group_concat(name) . MySQL中group_concat函数 完整的语法如下: grou ...
- mysql中group_concat函数用法
该函数返回带有来自一个组的连接的非NULL值的字符串结果.该函数是一个增强的Sybase SQL Anywhere支持的基本LIST()函数. 语法结构: GROUP_CONCAT([DISTINCT ...
- MYSQL中group_concat( )函数中参数的排序方法
使用mysql中的group_concat( )函数连接指定字段时,可以先对该字段进行排序. PS:是因为二刷mysql的51道题的第12题遇到的:查询和" 01 "号同学学习的课 ...
- 关于Mysql中GROUP_CONCAT函数返回值长度的坑
1.GROUP_CONCAT函数: 功能:将group by产生的同一个分组中的值连接起来,返回一个字符串结果. 语法:group_concat( [distinct] 要连接的字段 [order b ...
随机推荐
- 转:PAT练习题概览
AT(pat.zju.edu.cn)是一个面向 C/C++程序的 Online Judge 系统.相比 ZOJ,HDOJ,POJ 等 ACM 题库,PAT 的题目非常基础,对于数据结构.算法的入门是比 ...
- HDU 1848 Fibonacci again and again
题解:尼姆博弈,对于1至1000计算SG函数,每次取最小的前继值,SG值异或为0则为P-position. #include <cstdio> #include <cstring&g ...
- java.lang.class.getResource
静态块,在项目启动的时候就执行,是主动执行的. 静态方法, 是被动执行的,需要被调用才执行. static{ try { String path = Conf ...
- Eclipse 代码提示不显示的问题
在备份Android SDK和Eclipse的时候出了问题,然后只能重新下载,SDK下得我都要吐血了,超慢.然后,我发现Eclipse有了新版本的,于是就下载了个新版的,结果出了问题了.所有的Andr ...
- Desert King(最优比率生成树)
Desert King Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 22717 Accepted: 6374 Desc ...
- 初试PL/SQL并行编程
-----------------------------Cryking原创------------------------------ -----------------------转载请注明出处, ...
- mybatis级联查询
1.定义四个实体.User Role Privilege Resource,他们之间的对于关系为 2.需求:我通过用户名username查找出该用户对应的角色以及角色对应的权限和资源 3 ...
- js 获取星期
var week; if (new Date().getDay() == 0) week = "星期日"; if (new Date() ...
- python学习之day9
队列queue 队列是线程安全的,它保证多线程间的数据交互的一致性. 先进先出队列Queue import queue q = queue.Queue(maxsize=3) #maxsize为队列最大 ...
- Python:爬取乌云厂商列表,使用BeautifulSoup解析
在SSS论坛看到有人写的Python爬取乌云厂商,想练一下手,就照着重新写了一遍 原帖:http://bbs.sssie.com/thread-965-1-1.html #coding:utf- im ...