mysql 查询拓展 触发器 交叉表 存储过程

<pre name="code" class="sql">BEGIN
-- 管理员使用 用于快速创建人员的基本数据工龄与系数
	DECLARE done INT DEFAULT 0;

DECLARE usewy int;
DECLARE user int;
DECLARE jobs int ;
DECLARE jobxs FLOAT;
DECLARE users CURSOR
	FOR SELECT user_id FROM 小野_sys_user WHERE department_id  <> 1; 
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done=1;
SET done=0;
OPEN users;
	REPEAT  
	FETCH users INTO user;
IF done=0 THEN
SELECT job_id FROM 小野_sys_user WHERE user_id =user INTO jobs;

SELECT sgmodulus FROM 小野_sys_job WHERE job_id=jobs INTO jobxs;

SELECT YEAR(CURDATE())-YEAR(workyear) FROM 小野_sys_user WHERE user_id=user INTO usewy;

INSERT INTO 小野_year_user(user_id,work_date,in_date,xis)VALUES(user,usewy,CURDATE(),jobxs);
end if;
	UNTIL done END REPEAT;
CLOSE users;
END

SHOW TRIGGERS;
DROP TRIGGER insertUser
DROP TRIGGER deleteUser;-- 随时更新部门人数
DROP TRIGGER updateUser;
CREATE TRIGGER insertUser BEFORE  insert on 小野_sys_user for each row 
BEGIN 
UPDATE 小野_sys_department SET persons = 
(SELECT COUNT(*) FROM 小野_sys_user as u  WHERE u.department_id = new.department_id AND u.roler_id not IN (35))
 WHERE department_id = new.department_id;
END
CREATE TRIGGER deleteUser BEFORE DELETE on 小野_sys_user for each row 
BEGIN 
UPDATE 小野_sys_department SET persons = 
(SELECT COUNT(*) FROM 小野_sys_user as u  WHERE u.department_id = old.department_id AND u.roler_id not IN (35))
 WHERE department_id = old.department_id;
END
CREATE TRIGGER updateUser BEFORE UPDATE on 小野_sys_user for each row 
BEGIN 
UPDATE 小野_sys_department SET persons = 
(SELECT COUNT(*) FROM 小野_sys_user as u  WHERE u.department_id = new.department_id AND u.roler_id not IN (35))
 WHERE department_id = new.department_id;
UPDATE 小野_sys_department SET persons = 
(SELECT COUNT(*) FROM 小野_sys_user as u  WHERE u.department_id = old.department_id AND u.roler_id not IN (35))
 WHERE department_id = old.department_id;
END

SELECT s.dept_id,
FORMAT(SUM(IF(flag=1,score,0)),1) AS cgkh,
FORMAT(SUM(IF(flag=2,score,0)),1) AS zxkh,
FORMAT(SUM(IF(flag in (1,2),score,0)),1) AS sumkh,
d.department_name AS dept_ids 
FROM 小野_score_dept AS s,
小野_sys_department AS d 
WHERE DATE_FORMAT(deal_date,'%Y-%m') = DATE_FORMAT(DATE_SUB(CURDATE(),interval 1 MONTH),'%Y-%m') 
AND d.department_id = s.dept_id GROUP BY s.dept_id ORDER BY s.dept_id ASC 
 SELECT d.department_name,
FORMAT(SUM(IF(s.flag = 0 AND s.dept_id =  d.department_id ,score,0))+10,1) AS zdscore,
FORMAT(SUM(IF(s.flag in(1,2) AND s.dept_id =  d.department_id ,score,0))+50,1) AS gjscore,
FORMAT(SUM(IF(s.flag = 3 AND s.dept_id =  d.department_id ,score,0)),1) AS ggscore,
FORMAT(SUM(IF(s.flag = 4 AND s.dept_id =  d.department_id ,score,0)),1) AS mzscore,
FORMAT(SUM(IF(s.flag in(0,1,2,3,4 )AND s.dept_id =  d.department_id ,score,0)),1) AS sumsscore 
FROM 小野_sys_department as d
, 小野_score_dept as s 
WHERE d.department_id <> 1 
AND DATE_FORMAT(s.deal_date,'%Y-%m')= DATE_FORMAT(DATE_SUB(CURDATE(),interval 1 MONTH),'%Y-%m') 
GROUP BY d.department_id ORDER BY d.department_id 



                
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

彳卸风

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值