From c271550a3ee9f9a94103ea6119e064f4fb95b1d3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E6=96=87=E8=BE=89?= <14279272+yuwuchuji_0@user.noreply.gitee.com> Date: Sun, 29 Sep 2024 03:22:09 +0000 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 刘文辉 <14279272+yuwuchuji_0@user.noreply.gitee.com> --- .../CASE-2024-09-29.md" | 52 +++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 "\345\210\230\346\226\207\350\276\211/CASE-2024-09-29.md" diff --git "a/\345\210\230\346\226\207\350\276\211/CASE-2024-09-29.md" "b/\345\210\230\346\226\207\350\276\211/CASE-2024-09-29.md" new file mode 100644 index 0000000..ce972b6 --- /dev/null +++ "b/\345\210\230\346\226\207\350\276\211/CASE-2024-09-29.md" @@ -0,0 +1,52 @@ +# CASE + +```sql +### 2. :根据薪资范围增加奖金,使用 `CASE` 语句和循环 + +设计一个存储过程,遍历所有员工,根据薪资范围增加奖金: + +- 薪资 < 10000: 奖金增加 100 +- 薪资在 10000 到 20000 之间: 奖金增加 200 +- 薪资 > 30000 不加 + +最后打印几个员工增加了奖金a +DROP PROCEDURE IF EXISTS addcomm; + +CREATE PROCEDURE addcomm() +BEGIN +SELECT count(u.增加了奖金) 几个员工增加了奖金 FROM (SELECT ename,sal,case WHEN sal<10000 THEN sal+100 WHEN sal BETWEEN 10000 AND 20000 THEN sal+200 WHEN sal>30000 THEN sal END AS 增加了奖金 FROM emp) u ; +END; +CALL addcomm; + + +3. 分组统计全公司各部门的平均工资,人数,及10000以下、10001-20000、20001-30000、30001以上的人数 +SELECT AVG(sal),CASE + WHEN sal<10000 THEN '1' + WHEN sal BETWEEN 10001 AND 20000 THEN '2' + WHEN sal BETWEEN 20001 AND 30000 THEN '3' + WHEN sal>30001 THEN '4' + END AS commm + FROM emp GROUP BY commm + ----------------------------------------------- +DROP PROCEDURE IF EXISTS addcomm; + +CREATE PROCEDURE addcomm() +BEGIN + SELECT CASE WHEN ur.commm = '1' THEN '10000' + WHEN ur.commm = '2' THEN '10001-20000' + WHEN ur.commm = '3' THEN '20001-30000' + WHEN ur.commm = '4' THEN '30001以上' +END AS A分类 , +AVG(ur.sal) B平均工资,COUNT(ur.commm) AS C人数 +FROM (SELECT *,CASE + WHEN sal<10000 THEN '1' + WHEN sal BETWEEN 10001 AND 20000 THEN '2' + WHEN sal BETWEEN 20001 AND 30000 THEN '3' + WHEN sal>30001 THEN '4' + END AS commm + FROM emp em) ur GROUP BY ur.commm; +END; + +CALL addcomm; +``` + -- Gitee