您的位置:首页 > 数据库 > MySQL

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次的人数

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: