MySQL 创建\调用存储过程
2017-03-21 13:11
555 查看
/*********************************创建存储过程*****************************************/
DELIMITER $$USE `kxtx-jrbi`$$DROP PROCEDURE IF EXISTS `lianxu`$$CREATE DEFINER=`jrbiuser`@`%` PROCEDURE `lianxu`(IN n INT,IN start_date DATE,IN end_date DATE)BEGINSELECT COUNT(DISTINCT uid) FROM(SELECT uid, MAX(days) lianxu_days, MIN(login_day) start_date,MAX(login_day) end_dateFROM (SELECT uid,@cont_day :=(CASEWHEN (@last_uid = uid AND DATEDIFF(login_dt, @last_dt)=1) THEN(@cont_day + 1)WHEN (@last_uid = uid AND DATEDIFF(login_dt, @last_dt)<1) THEN(@cont_day + 0)ELSE1END) AS days,(@cont_ix := (@cont_ix + IF(@cont_day = 1, 1, 0))) AS cont_ix,@last_uid := uid,@last_dt := login_dt login_dayFROM (SELECT uid,login_dt FROM(SELECT out_company AS uid , trading_date AS login_dt FROM `t_platform_trade_base`WHERE trading_date BETWEEN start_date AND end_dateAND waybill_type='自开单'UNIONSELECT uk_company, trading_date FROM `t_platform_trade_base`WHERE trading_date BETWEEN start_date AND end_dateAND waybill_type='承接单' ) a1ORDER BY uid,login_dt) AS t,(SELECT @last_uid := '',@last_dt := '',@cont_ix := 0,@cont_day := 0) AS t1) AS t2GROUP BY uid, cont_ix )aWHERE lianxu_days>=n;END$$DELIMITER ;
/************************调用存储过程**********************************/
call(5,'2016-02-01','2017-02-01'); -- 返回2016-02-01到2017-02-01 期间活跃次数至少5次的人数
相关文章推荐
- mysql存储过程的创建,删除,调用及其他常用命令
- mysql 创建存储过程 java程序调用该存储过程
- mysql中的存储过程、触发器、视图是如何创建的,以及PHP中是如何调用的
- iBatis调用存储过程以及MySQL创建存储过程
- Mysql存储过程的创建,调用和三种参数类型的解释说明
- PHP创建与调用MySQL存储过程实例
- MySQL存储过程的创建及调用
- MySQL存储过程的创建及调用
- Mysql存储过程的创建以及调用
- mysql存储过程的创建,删除,调用及其他常用命令
- MySQL存储过程和自定义函数、Navicat for mysql、创建存储过程和函数、调用存储过程和函数的区别
- mysql存储过程的创建,删除,调用及其他常用命令
- MySQL存储过程和自定义函数、Navicat、创建存储过程和函数、调用存储过程和函数、三种方式、In和Out类型参数、
- MySQL存储过程的创建及调用
- MySQL 存储过程创建、调用
- mysql中的存储过程、触发器、视图是如何创建的,以及PHP中是如何调用的
- iBatis调用存储过程以及MySQL创建存储过程
- mysql 存储过程创建以及调用
- MySQL之存储过程创建和调用
- mysql创建 存储过程 并通过java程序调用该存储过程