python学习笔记 day43 分组查询+ SQL执行顺序
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python学习笔记 day43 分组查询+ SQL执行顺序,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3044字,纯文字阅读大概需要5分钟。
内容图文
![python学习笔记 day43 分组查询+ SQL执行顺序](/upload/InfoBanner/zyjiaocheng/919/a3a045818d5b4afd806d04e6a5e240e3.jpg)
1. 分组查询
当遇到“每”时一般需要考虑分组查询;
比如“公司每个部门有多少人;” “公司有多少男员工,有多少女员工” 这种都需要用到分组查询;
语法: select sum(salary),dept_id from person group by dept_id
首先创建一张表:
create table person( id int not null auto_increment primary key, name varchar(50) not null, age int not null, sex char(2) not null, salary int not null, dept_id int not null) select * from person insert into person values(1,"xuanxuan",22,"女",20000,1),(2,"xixi",23,"女",10000,1),(3,"dongdong",24,"男",17000,1),(4,"haha",25,"男",19000,2),(5,"hehe",25,"男",22000,2),(6,"menmeng",24,"女",16000,2),(7,"duoduo",25,"男",22000,3),(8,"haohao",24,"男",19000,3) select * from person
运行结果:
1. 查询每个部门薪资总额,并且显示部门信息:----需要用到分组查询:
select sum(salary),dept_id from person group by dept_id; # 按照det_id分组,查询每个部门薪资总额
运行结果:
2. 分组查询还可以加条件: 查询薪资总额大于45000的所有部门----需要用到分组查询(按照部门分组,计算每一部门的薪资总额)+条件(部门薪资总额大于45000的)
select sum(salary),dept_id from person group by dept_id having sum(salary)>45000; # 先按照部门分组,计算每一个部门的总薪资,然后加上条件 薪资总额大于45000的才显示,配合group by 使用的条件是having
(其实相当于where 只不过where优先级大于group by 所以不能放在group by后面,只能使用having与group by配合使用)
运行结果:
3. 如果想要查看每个部门的最大薪资是多少:
select max(salary),dept_id from person group by dept_id; # 查看每一个部门的最大薪资
运行结果:
4. 如果想查看每一个部门的平均薪资(avg(salary)),并且显示部门的人员信息:
如果是:(不正确解法:)
select avg(salary),name,dept_id from person group by dept_id; # 查看每一部门的平均薪资,但是这样直接name放在这里,并不会显示该组内所有人员信息,只会显示一个(类似扑克牌分组堆叠,只会显示最上面那个)
运行结果:
所以正确做法应该是:(在需要显示组内全部信息的字段加上group_concat(要组内全部显示的信息))
select avg(salary),group_concat(name),dept_id from person group by dept_id;
运行结果:
小作业:查询平均薪资大于20000的部门,并且看该部门员工都有谁:(用到分组查询+条件+显示组内某一字段全部信息)
select sum(salary),group_concat(name),dept_id from person where name is not null group by dept_id order by sum(salary) limit 0,5
运行结果:
2. 分页显示:需要用到limit 关键字,第一个参数是起始从哪一条开始,第二个参数是一页一共显示多少条
select * from person limit 0,4; # 查看表person,从第一条开始显示,总共显示条; select * from person limit 4,5; # 从第五条开始显示,一共显示5条(5-8)
运行结果:
3. SQL执行顺序
执行顺序是:
from person(看哪一张表) ---> where name is not null(条件)--->group by(按照什么分组)---having(分组查询条件)---select(查询)---order by (按照什么排序)--limit(显示)
首先先看是哪一张表from person,然后where看下条件,接着看分组group by 然后看分组的条件 having 然后select查询 接着对查询到的结果排序order 排序结束显示limit;
4. 作业(待完成)
http://www.cnblogs.com/wangfengming/articles/7944029.html
http://www.cnblogs.com/wangfengming/articles/7889786.html
内容总结
以上是互联网集市为您收集整理的python学习笔记 day43 分组查询+ SQL执行顺序全部内容,希望文章能够帮你解决python学习笔记 day43 分组查询+ SQL执行顺序所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。