통계용 함수를 MySQL의 Plugin 형식으로 개발
1. MySQL Plugin용 Math UDF -- -- 01. Install -- ( use root user ) git clone http://github.com/megastep/mysql-udf.git if os = ubuntu then apt install gcc gcc-c++ make libmariadbclient-dev else if os = centos yum install gcc gcc-c++ make MariaDB-devel-xx.xx end if vi Makefile /* MySQL Header File 위치 수정 */ INCL = -l/usr/include/mysql /* Build */ make cp udf_math.so /usr/lib64/mysql/plugin /* function import */ mysql -uroot -p -A mysql -e "source import.sql" -- -- 02. Check -- select * from mysql.func; name ret dl type ----------------- ------ ----------- ----------- colwidth 2 udf_math.so aggregate confidence_higher 1 udf_math.so function confidence_lower 1 udf_math.so function correlation 1 udf_math.so aggregate faculty 1 udf_math.so function geomean 1 udf_math.so aggregate intercept 1 udf_math.so aggregate kurtosis 1 udf_math.so aggregate longest 0 udf_math.so aggregate median 1 udf_math.so aggregate noverm 1 udf_math.so function skewness 1 udf_math.so aggregate slope 1 udf_math.so aggregate stdnorm_density 1 udf_math.so function stdnorm_dist 1 udf_math.so function weightedavg 1 udf_math.so aggregate steyx 1 udf_math.so aggregate
Function Spec
UDF MEDIAN()
Function name median
Purpose calculate the median of a column
Aggregate function Yes
Input parameter(s) 1 (column: REAL)
Conditions -
Output value(s) 1 per group (REAL)
Examples SELECT MEDIAN(age) FROM bar
SELECT gender, MEDIAN(age),AVG(age) FROM bar GROUP BY gender
Registration CREATE AGGREGATE FUNCTION median RETURNS REAL SONAME 'udf_median.so';
UDF CORRELATION()
Function name correlation
Purpose calculate the correlation coefficient of the linear regression of two sets of variables
Aggregate function Yes
Input parameter(s) 1 (dependent variable: REAL,
independent variable: REAL)
Conditions -
Output value(s) 1 per group (REAL)
Examples SELECT correlation(income,age) FROM customers
Registration CREATE AGGREGATE FUNCTION correlation RETURNS REAL SONAME 'udf_correlation.so';
UDF INTERCEPT()
Function name intercept
Purpose calculate the intercept of the linear regression of two sets of variables
Aggregate function Yes
Input parameter(s) 2 (dependent variable: REAL,
independent variable: REAL)
Conditions -
Output value(s) 1 per group (REAL)
Examples SELECT intercept(income,age) FROM customers
Registration CREATE AGGREGATE FUNCTION intercept RETURNS REAL SONAME 'udf_intercept.so';
UDF SLOPE()
Function name slope
Purpose calculate the slope of the linear regression of two sets of variables
Aggregate function Yes
Input parameter(s) 2 (dependent variable: REAL,
independent variable: REAL)
Conditions -
Output value(s) 1 per group (REAL)
Examples SELECT slope(income,age) FROM customers
Registration CREATE AGGREGATE FUNCTION slope RETURNS REAL SONAME 'udf_slope.so';
UDF SKEWNESS()
Function name skewness
Purpose calculate the skewness of a distribution of values
Aggregate function Yes
Input parameter(s) 1 (data: REAL)
Conditions -
Output value(s) 1 per group (REAL)
Examples SELECT skewness(age) FROM customers
Registration CREATE AGGREGATE FUNCTION skewness RETURNS REAL SONAME 'udf_skewness.so';
UDF KURTOSIS()
Function name kurtosis
Purpose calculate the kurtosis of a distribution of values
Aggregate function Yes
Input parameter(s) 1 (data: REAL)
Conditions -
Output value(s) 1 per group (REAL)
Examples SELECT kurtosis(age) FROM customers
Registration CREATE AGGREGATE FUNCTION kurtosis RETURNS REAL SONAME 'udf_kurtosis.so';
UDF CONFIDENCE_HIGHER()
Function name confidence_higher
Purpose calculate the upper bound of the confidence interval for a given standard deviation, sample size, mean and confidence probabilty
Aggregate function No
Input parameter(s) 4 or 5 (confidence probability p: INT or REAL,
sample size n: INT,
arithmetic mean my: INT or REAL,
standard deviation s: INT or REAL,
number of decimals: INT, optional)
Conditions -
Output value(s) 1 per row (REAL)
Examples SELECT confidence_higher(0.95,2000,550,60,4)
Registration CREATE FUNCTION confidence_higher RETURNS REAL SONAME 'udf_confidence_higher.so';
UDF CONFIDENCE_LOWER()
Function name confidence_lower
Purpose calculate the lower bound of the confidence interval for a given standard deviation, sample size, mean and confidence probabilty
Aggregate function No
Input parameter(s) 4 or 5 (confidence probability p: INT or REAL,
sample size n: INT,
arithmetic mean my: INT or REAL,
standard deviation s: INT or REAL,
number of decimals: INT, optional)
Conditions -
Output value(s) 1 per row (REAL)
Examples SELECT confidence_lower(0.95,2000,550,60,4)
Registration CREATE FUNCTION confidence_lower RETURNS REAL SONAME 'udf_confidence_lower.so';
UDF STDNORM_DENSITY()
Function name stdnorm_density
Purpose calculate the value of the density function of the standard normal distribution for a given point
Aggregate function No
Input parameter(s) 1 or 2 ( point p: INT or REAL,
number of decimals: INT, optional)
Conditions -
Output value(s) 1 per row (REAL)
Examples SELECT stdnorm_density(0,4)
Registration CREATE FUNCTION stdnorm_density RETURNS REAL SONAME 'udf_stdnorm_density.so';
UDF STDNORM_DIST()
Function name stdnorm_dist
Purpose calculate the value of the distribution function of the standard normal distribution for a given point
Aggregate function No
Input parameter(s) 1 or 2 ( point p: INT or REAL,
number of decimals: INT, optional)
Conditions -
Output value(s) 1 per row (REAL)
Examples SELECT stdnorm_dist(0,4)
Registration CREATE FUNCTION stdnorm_dist RETURNS REAL SONAME 'udf_stdnorm_dist.so';
UDF GEOMEAN()
Function name geomean
Purpose calculate the geometric mean of a column
Aggregate function Yes
Input parameter(s) 1 (data: REAL)
Conditions -
Output value(s) 1 per group (REAL)
Examples SELECT geomean(price) FROM products
Registration CREATE AGGREGATE FUNCTION geomean RETURNS REAL SONAME 'udf_geomean.so';
UDF WEIGHTEDAVG()
Function name weightedavg
Purpose calculate the weighted average of a values
Aggregate function Yes
Input parameter(s) 2 (data: REAL)
(weight: REAL)
Conditions -
Output value(s) 1 per group (REAL)
Examples SELECT weightedavg(voting,categoryweight) FROM votes
Registration CREATE AGGREGATE FUNCTION weightedavg RETURNS REAL SONAME 'udf_weightedavg.so';
UDF NOVERM()
Function name noverm
Purpose calculate the number of possible combinations of size m from a set of n total values
(without regarding the order of values in combinations)
Aggregate function No
Input parameter(s) 2 (n: INTEGER,
m: INTEGER)
Conditions n must be greater than 1, m must be between 1 and m
Output value(s) 1 (REAL)
Examples SELECT noverm(10,2)
SELECT noverm(foo,bar) FROM baz
Registration CREATE FUNCTION noverm RETURNS INTEGER SONAME 'udf_noverm.so';
UDF FACULTY()
Function name faculty
Purpose calculate the faculty (n!) of a number (1*2*3*4*5*6...*n)
Aggregate function No
Input parameter(s) 1 (n: INTEGER)
Conditions n must be greater than 0
Output value(s) 1 (REAL)
Examples SELECT faculty(20)
SELECT faculty(foo) FROM bar
Registration CREATE FUNCTION faculty RETURNS REAL SONAME 'udf_faculty.so';
UDF COLWIDTH()
Function name colwidth
Purpose calculate the length of the longest value in a STRING column
Aggregate function Yes
Input parameter(s) 1 (column: STRING)
Conditions -
Output value(s) 1 per group (INTEGER)
Examples SELECT COLWIDTH(request_vars) FROM request_log
SELECT session.id,COLWIDTH(session_vars.value) FROM session,session_vars
WHERE session.id=session_vars.session_id
GROUP BY session_id
Registration CREATE AGGREGATE FUNCTION COLWIDTH RETURNS INTEGER SONAME 'udf_colwidth.so';
UDF LONGEST()
Function name longest
Purpose get the longest value in a STRING column
Aggregate function Yes
Input parameter(s) 1 (column: STRING)
Conditions -
Output value(s) 1 per group (STRING)
Examples SELECT LONGEST(name) FROM users
SELECT LONGEST(request_vars) FROM request_log GROUP BY script_name
Registration CREATE AGGREGATE FUNCTION LONGEST RETURNS STRING SONAME 'udf_longest.so';