查询各个组中的关键字查询:
SELECT e1.empno FROM emp e1,emp e2 WHERE e1.empno=e2.empno AND e2.hiredate in (SELECT max(hiredate)from emp GROUP BY deptno)and e1.deptno=30
mysql存储过程的例句:
CREATE get3(IN p_count INT,OUT s_avg INT)
BEGIN
DECLARE i int DEFAULT 0;
DECLARE sum int DEFAULT 0;
DEClARE temp int ;
WHILE i<p_count
DO
set temp=LPAD(RAND()*10000,4,0);
INSERT TScore() VALUES (LPAD(RAND()*1000,4,0),NuLL,NULL,NULL,NULL,temp,NULL,NULL);
SET sum=sum+temp;
SET i=i+1;
END WHILE;
set s_avg=sum/p_count;
END;
mysql创建函数的例句
CREATE get2(deptno INT)
RETURNS int(11)
BEGIN
DECLARE lateempno INT;
SELECT e1.empno into lateempno FROM emp e1,emp e2 WHERE e1.empno=e2.empno AND e2.hiredate in (SELECT max(hiredate)from emp GROUP BY deptno)and e1.deptno=30;
RETURN lateempno;
END;
要求表环境为emp,dept。
--使用if else 或case when语句完成
1.创建一个函数,返回类型为varchar(50),函数名任意。
功能要求:
根据员工的薪资数(sal为薪资列),为员工薪资水平标记层次;
薪资小于1000:民工;
大于1000并且小于2000:基层;
大于2000小于3500:白领;
大于3500:高富帅;
其他:不稳定人员
调用函数,要求显示员工姓名(ename),薪资水平。
提示:员工薪资为参数
CREATE FUNCTION getCengci(sal INT)
RETURNS VARCHAR(50)
BEGIN
DECLARE cengci VARCHAR(50);
IF sal>3500 THEN
SET cengci='高富帅';
ELSE IF sal>2000 THEN
SET cengci='白领';
ELSE IF sal>1000 THEN
SET cengci='基层';
ELSE
SET cengci='不稳定人员';
END IF;
END IF;
END IF;
RETURN cengci;
END
2.创建一个函数,返回类型为int,函数名任意。
功能要求:
输入部门编号emp表中deptno为部门编号,返回该部门入职(hiredate)最晚的员工的员工编号;
提示:用到聚合函数来判断入职时间
CREATE FUNCTION get2(deptno INT)
RETURNS INT
BEGIN
DECLARE lateempno INT;
SELECT empno INTO lateempno FROM emp WHERE hiredate=(SELECT MAX(hiredate) FROM emp);
RETURN lateempno;
END
3.创建一个存储过程,循环向表emp插入员工及员工编号、薪资2项信息
要求:
员工编号采用随机生成机制(随机数4位,不满4位向左补0) 4
员工薪资采用随机生成机制(随机数5位及以下) int
1个入参,输入要插入的员工个数;
1个出参,输出插入的员工的薪资平均数; avg
CREATE
PROCEDURE get3(IN p_count INT,OUT s_avg INT)
BEGIN
DECLARE i int DEFAULT 0;
DECLARE sum int DEFAULT 0;
DEClARE temp int;
WHILE i<p_count
DO
set temp=LPAD(RAND()*10000,4,0);
INSERT TScore() VALUES (LPAD(RAND()*1000,4,0),NuLL,NULL,NULL,NULL,temp,NULL,NULL);
SET sum=sum+temp;
SET i=i+1;
END WHILE;
set s_avg=sum/p_count;
END
SELECT e1.empno INTO lateempno FROM emp e1,emp e2 WHERE e1.empno=e2.empno AND e2.sal in (SELECT max(sal)from emp GROUP BY deptno ) and e1.deptno=30;