ICP证:苏B2-20090207  ISP证:苏B2-20090195  24小时客服中心:400-688-9875  
  ID:   密码:   验证码:  
欧网销售-⑨ QQ在线聊天,你可以加我为好友,QQ号码:97039189 无需客户端支持,直接点击即可交谈或留言
欧网销售-② QQ在线聊天,你可以加我为好友,QQ号码:97039182 无需客户端支持,直接点击即可交谈或留言
欧网销售-④ QQ在线聊天,你可以加我为好友,QQ号码:97039184 无需客户端支持,直接点击即可交谈或留言
欧网销售-③ QQ在线聊天,你可以加我为好友,QQ号码:97039183 无需客户端支持,直接点击即可交谈或留言
欧网技术-① QQ在线聊天,你可以加我为好友,QQ号码:233111 无需客户端支持,直接点击即可交谈或留言
欧网备案-⑤ QQ在线聊天,你可以加我为好友,QQ号码:97039185 无需客户端支持,直接点击即可交谈或留言
欧网网维-⑧ QQ在线聊天,你可以加我为好友,QQ号码:97039188 无需客户端支持,直接点击即可交谈或留言
我的知识库
服务器-WEB服务
服务器-FTP服务
服务器-安全防护
IDC业务相关
服务器相关问题
托管相关问题
网络编程-ASP
网络编程-PHP
网络编程-.NET
数据库-Access
数据库-Mssql
数据库-Mysql
空间相关问题
域名相关问题
邮局相关问题
付款相关问题
相关文本合同
企业相关资质
常用软件下载
域名备案专题
首页 >> 我的知识库 >>数据库-Mysql >> 扩展求方差的mysql函数例子  
扩展求方差的mysql函数例子
[ 作者: JiangMiao | 文章来源: 编程中国 | 点击数: 1509 | 更新时间: 2007-11-4 8:58:17 ]

源码

以下为引用的内容:

// Author: JiangMiao
// Name: 扩展求方差的MySQL函数列子
// Date: 2006-10-19
// Link: http://blog.sina.com.cn/u/1259926384 - JiangMiao的Blog
#include "winsock2.h"
#include "MySQL.h"
#include
using namespace std;
#define SAFE_DELETE(p) if(p!=NULL){delete p;p=NULL;}
#define CDLLEXPORT extern "C" __declspec(dllexport)
typedef __int64 longlong;
typedef vector vec_double;
typedef unsigned long ulong;
class VAR
{
private:
vec_double datas;
double total;

中国.南通服务器网

public:
VAR():total(0.0) {}
//加入num
void push_back(double num)
{
datas.push_back(num);
total+=num;
}
void clear()
{
datas.clear();
total=0.0;
}
//取方差
double getVariance()
{
size_t count=datas.size();
double avr=0.0;
avr=(total/count); //平均数
double rt=0.0;
for(size_t i=0;i {
double k=(datas[i]-avr);
rt+=k*k;
}
return rt/count;
} 中国南通服务器网

};
CDLLEXPORT my_bool variance_init(UDF_INIT *initid, UDF_ARGS *args, char *message)
{
initid->ptr = NULL;
if(args->arg_count!=1) //参数个数为1
{
return 1;
}
if(args->arg_type[0]!=REAL_RESULT||args->arg_type[0]!=INT_RESULT) //参数类别为整型或double
{
return 1;
}
initid->ptr = (char*)new VAR();
return 0;
}
CDLLEXPORT void variance_deinit(UDF_INIT *initid)
{
VAR* ptr=(VAR*)initid->ptr;
delete ptr;
}
CDLLEXPORT double variance(UDF_INIT *initid, UDF_ARGS *args,char *is_null, char *error)
{
VAR* ptr=(VAR*)initid->ptr;
return ptr->getVariance();
}
CDLLEXPORT void variance_clear(UDF_INIT *initid, char *is_null, char *error)
{
VAR* ptr=(VAR*)initid->ptr;
ptr->clear();
}
CDLLEXPORT void variance_add(UDF_INIT *initid, UDF_ARGS *args, char *is_null, char *error)
{
VAR* ptr=(VAR*)initid->ptr; 中.国.南通服务器网
char* argo=args->args[0];
double arg;
if(args->arg_type[0]==REAL_RESULT)
{
arg=*(double*)argo;
}
if(args->arg_type[0]==INT_RESULT)
{
arg=(double)*(__int64*)argo;
}
ptr->push_back(arg);
}

中.国南通服务器网

Www.Spdns.com

编译后得到variance.dll

Spdns_com

复制到bin目录下 中国.南通服务器网

测试 中国.南通服务器网

以下为引用的内容:

MySQL> use test;
Database changed
MySQL> create table vartest (realtest real,inttest int);
Query OK, 0 rows affected (0.11 sec)

中国.南通服务器网

MySQL> insert into vartest values(5,5),(6,6),(9,9),(10,10),(5,5);
Query OK, 5 rows affected (0.03 sec)
Records: 5 Duplicates: 0 Warnings: 0

中国南通服务器网,为中文网南通服务器网

Tags:扩展 求方差 mysql 函数
责任编辑:阿小



评论
收藏
推荐
打印
关闭
字体:+ -
纠错


Copyright © 1999-2009 诚信 合法 规范的欧网 www.spdns.com 始建于1996
南通欧网网络科技有限公司 公司地址:江苏省南通市崇川区桃园路8号中南世纪14幢10层 企业法人营业执照 电信增值业务经营许可证(ICP) 电信增值业务经营许可证(ISP)
中华人民共和国电信增值业务经营许可证 (ICP):苏B2-20090207 (ISP):苏B2-20090195
中华人民共和国企业注册号:320600000226624/help/hlp_dtl.asp
CNIDC认证商家 支付宝特约商家