流程控制,分组管理

流程控制
1,IF(expr,v1,v2): 如果expr是TRUE则返回v1,否则返回v2
mysql> select  if(3>0,'正数','0或负数') ;
+-------------------------------+
| if(3>0,'正数','0或负数')      |
+-------------------------------+
| 正数                          |
+-------------------------------+
1 row in set (0.00 sec)
2,IFNULL(v1,v2): 如果v1不为NULL,则返回v1,否则返回v2
mysql> insert into departments(dept_id) values(9);
mysql> select dept_id, dept_name, ifnull(dept_name, '未设置') from departments; 
+---------+-----------+--------------------------------+
| dept_id | dept_name | ifnull(dept_name, '未设置')    |
+---------+-----------+--------------------------------+
|       1 | 人事部    | 人事部                         |
|       2 | 财务部    | 财务部                         |
|       3 | 运维部    | 运维部                         |
|       4 | 开发部    | 开发部                         |
|       5 | 测试部    | 测试部                         |
|       6 | 市场部    | 市场部                         |
|       7 | 销售部    | 销售部                         |
|       8 | 法务部    | 法务部                         |
|       9 | NULL      | 未设置                         |
+---------+-----------+--------------------------------+
9 rows in set (0.00 sec),
3,CASE expr WHEN v1 THEN r1 [WHEN v2 THEN v2] [ELSE rn] END: 如果expr等于某个vn,则返回对应位置THEN后面的结果,如果与所有值都不想等,则返回ELSE后面的rn
mysql> select dept_id, dept_name,
    -> case dept_name
    -> when '运维部' then '技术部门'
    -> when '开发部' then '技术部门'
    -> when '测试部' then '技术部门'
    -> when null then '未设置'
    -> else '非技术部门'
    -> end as '部门类型'
    -> from departments;
+---------+-----------+-----------------+
| dept_id | dept_name | 部门类型        |
+---------+-----------+-----------------+
|       1 | 人事部    | 非技术部门      |
|       2 | 财务部    | 非技术部门      |
|       3 | 运维部    | 技术部门        |
|       4 | 开发部    | 技术部门        |
|       5 | 测试部    | 技术部门        |
|       6 | 市场部    | 非技术部门      |
|       7 | 销售部    | 非技术部门      |
|       8 | 法务部    | 非技术部门      |
|       9 | NULL      | 非技术部门      |
+---------+-----------+-----------------+
9 rows in set (0.00 sec)
分组函数
mysql> select employee_id,sum(basic+bonus) as total from salary where employee_id=10 and year(date)=2018;   求和
+-------------+--------+
| employee_id | total  |
+-------------+--------+
|          10 | 116389 |
+-------------+--------+
1 row in set (0.00 sec)

mysql> select employee_id,basic+bonus as total from salary where employee_id=10 and year(date)=2018;       
+-------------+-------+
| employee_id | total |
+-------------+-------+
|          10 | 24837 |
|          10 | 31837 |
|          10 | 29837 |
|          10 | 29878 |
+-------------+-------+
4 rows in set (0.00 sec)

mysql> select employee_id,min(basic+bonus) as total from salary where employee_id=10 and year(date)=2018;     求最小值
+-------------+-------+
| employee_id | total |
+-------------+-------+
|          10 | 24837 |
+-------------+-------+
1 row in set (0.00 sec)

mysql> select employee_id,count(*) as total from salary where employee_id=10 and year(date)=2018;
+-------------+-------+
| employee_id | total |
+-------------+-------+
|          10 |     4 |
+-------------+-------+
1 row in set (0.00 sec)

mysql> select count(*)    统计表总行数
    -> from
    -> salary;
+----------+
| count(*) |
+----------+
|     8055 |
+----------+
1 row in set (0.00 sec)
mysql> select                统计每个部门人数
    -> dept_id,count(*)
    -> from
    -> employees
    -> group by dept_id;
+---------+----------+
| dept_id | count(*) |
+---------+----------+
|       1 |        8 |
|       2 |        5 |
|       3 |        6 |
|       4 |       55 |
|       5 |       12 |
|       6 |        9 |
|       7 |       35 |
|       8 |        3 |
+---------+----------+
8 rows in set (0.00 sec)
查询2018年每个员工总收入
mysql> select
    -> employee_id,sum(basic+bonus) as total
    -> from
    -> salary
    -> where
    -> year(date)=2018
    -> group by employee_id
    -> order by total desc;
查询小于10人的部门
mysql> select dept_id,count(*) from employees group by dept_id
    -> having count(*)<10;
+---------+----------+
| dept_id | count(*) |
+---------+----------+
|       1 |        8 |
|       2 |        5 |
|       3 |        6 |
|       6 |        9 |
|       8 |        3 |
+---------+----------+
5 rows in set (0.00 sec)
连接查询(多表查询)
笛卡尔积,直接查询两张表的结果
查询员工及部门名
mysql> select 
        name,dept_name
        from employees,departments 
        where employees.dept_id=departments.dept_id;  这种方法不推荐

mysql> select 
          name,dept_name
          from employees
          inner join departments on employees.dept_id=departments.dept_id;

查询所有人2018年年薪分别是多少
mysql> select
    -> name,sum(basic+bonus) as total
    -> from employees as e
    -> inner join salary as s
    -> on e.employee_id=s.employee_id
    -> where year(date)=2018
    -> group by name
    -> order by total;
+-----------+--------+
| name      | total  |
+-----------+--------+
| 汪云      |  25093 |
| 郭娟      | 116389 |
| 聂想      | 119389 |
| 吴静      | 123733 |
| 戴璐      | 126687 |
| 赵凤兰    | 131733 |
| 黄秀云    | 133733 |
| 窦红梅    | 136282 |
| 梁静      | 136733 |
| 徐金凤    | 139733 |
| 段杨      | 143282 |
| 杨金凤    | 146733 |
| 唐芳      | 147687 |
| 田萍      | 148687 |
| 梁伟      | 151046 |
| 党丽      | 155629 |
| 余春梅    | 158629 |
| 莫凤兰    | 160733 |
| 崔志强    | 165687 |
| 邢淑兰    | 169687 |
| 陈玉      | 173595 |
| 韩丹      | 174629 |
| 蒋秀芳    | 176595 |
| 李柳      | 176687 |
| 李玉英    | 177595 |
| 贾荣      | 178595 |
| 杨桂香    | 180536 |
| 吴丽娟    | 185629 |
| 钟倩      | 186536 |
| 朱文      | 188536 |
| 巫杨      | 190629 |
| 谢琴      | 193536 |
| 孙婷      | 195595 |
| 谢莹      | 201432 |
| 王玉兰    | 201595 |
| 黄文      | 202432 |
| 张娜      | 202536 |
| 臧龙      | 209536 |
| 赵成      | 210490 |
| 潘玲      | 210595 |
| 张建平    | 212432 |
| 傅雪      | 213490 |
| 刘倩      | 216536 |
| 王波      | 224432 |
| 廖娜      | 224490 |
| 邢成      | 225687 |
| 陈建军    | 228432 |
| 赵杰      | 228432 |
| 吕刚      | 230386 |
| 熊东      | 230386 |
| 王英      | 233328 |
| 李慧      | 234386 |
| 黄建平    | 235432 |
| 贺磊      | 241432 |
| 林刚      | 242328 |
| 张伟      | 242432 |
| 张倩      | 245386 |
| 马涛      | 245386 |
| 汤华      | 247386 |
| 郑静      | 248076 |
| 王玉华    | 249328 |
| 李平      | 249328 |
| 郭兰英    | 254282 |
| 罗建华    | 254328 |
| 刘玲      | 254328 |
| 叶欣      | 254328 |
| 牛建军    | 257282 |
| 王畅      | 257328 |
| 胡瑜      | 257386 |
| 陈刚      | 261386 |
| 张健      | 262282 |
| 李静      | 262282 |
| 李瑞      | 263282 |
| 张淑英    | 263386 |
| 郑秀珍    | 264282 |
| 曹宁      | 267224 |
| 王楠      | 269224 |
| 徐成      | 269282 |
| 王璐      | 272282 |
| 游静      | 273224 |
| 陶红      | 280190 |
| 宋艳      | 283224 |
| 蒋红      | 288190 |
| 萧秀华    | 288224 |
| 许欣      | 289190 |
| 冯建国    | 292224 |
| 罗岩      | 293190 |
| 毛丹      | 294190 |
| 李莹      | 299190 |
| 王淑珍    | 304131 |
| 张冬梅    | 304190 |
| 刘桂兰    | 305131 |
| 胡秀云    | 313027 |
| 刘斌      | 314027 |
| 田英      | 314131 |
| 张亮      | 317027 |
| 李建华    | 318131 |
| 陈阳      | 319190 |
| 曹凯      | 322027 |
| 张梅      | 323027 |
| 宋慧      | 328027 |
| 郭岩      | 328131 |
| 陈洁      | 329027 |
| 苗桂花    | 329027 |
| 曹杰      | 332027 |
| 孙丹      | 332085 |
| 许辉      | 336027 |
| 王小红    | 341085 |
| 区军      | 341085 |
| 田兰英    | 342981 |
| 苏波      | 344027 |
| 梁勇      | 344981 |
| 张宇      | 348981 |
| 邵佳      | 353027 |
| 沈秀梅    | 357981 |
| 范秀英    | 359923 |
| 柴冬梅    | 360923 |
| 朱淑兰    | 362981 |
| 刘海燕    | 374923 |
| 和林      | 374923 |
+-----------+--------+
120 rows in set (0.00 sec)
查询年薪超过30万的
mysql> select 
        name,sum(basic+bonus) as total
        from employees as e
        inner join salary as s on e.employee_id=s.employee_id
        where year(date)=2018 
        group by name 
        having total>300000 
        order by total desc;
+-----------+--------+
| name      | total  |
+-----------+--------+
| 刘海燕    | 374923 |
| 和林      | 374923 |
| 朱淑兰    | 362981 |
| 柴冬梅    | 360923 |
| 范秀英    | 359923 |
| 沈秀梅    | 357981 |
| 邵佳      | 353027 |
| 张宇      | 348981 |
| 梁勇      | 344981 |
| 苏波      | 344027 |
| 田兰英    | 342981 |
| 王小红    | 341085 |
| 区军      | 341085 |
| 许辉      | 336027 |
| 孙丹      | 332085 |
| 曹杰      | 332027 |
| 陈洁      | 329027 |
| 苗桂花    | 329027 |
| 郭岩      | 328131 |
| 宋慧      | 328027 |
| 张梅      | 323027 |
| 曹凯      | 322027 |
| 陈阳      | 319190 |
| 李建华    | 318131 |
| 张亮      | 317027 |
| 田英      | 314131 |
| 刘斌      | 314027 |
| 胡秀云    | 313027 |
| 刘桂兰    | 305131 |
| 张冬梅    | 304190 |
| 王淑珍    | 304131 |
+-----------+--------+
31 rows in set (0.00 sec)


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值