group by 操作:
先依据查看的信息选出表格的列,再根据group by 内部分组;但是作为group by 的条件只会出现一个记录,所以如果是计数之类的记得结合函数使用;
select +列,+列,+列 from +表名 group by 分组依据,分组依据; 末尾加个with rollup 作为一个汇总无论是小的组别还是大的组别在分完后都有一次汇总;
eg:分学历,按性别统计人数,显示(学历、性别、人数),需要显示最后汇总 ps:查查group by 条件 and 条件 ,与 条件,条件的区别是啥。
LEFT函数:
先依据要求筛选相应数据,再在符合条件的数据内分组,执行对应函数;
eg: 按电话号码第1位数统计下人数,显示(电话首位,人数),可以使用left函数或substr函数:
eg:按部门统计平均收入,显示(部门名称、平均收入)
也就是说我们可以先创建临时表再进行分类是一种嵌套操作;其中先选出我们所需要的信息,选出后优先根据条件进行分组,分为组后才执行聚合函数;
下面的示例也是这样理解操作的:
查找xscj数据库,统计下每个月出生的学生人数,显示(出生月、人数)
注意聚合函数的使用
下面是顶级嵌套骚操作:
思想还行就是看你敢不敢敲;
查找xscj数据库,查询选了多于1门课,并且至少有1门课在60-69分之间的同学。显示(学号、姓名、课程名、成绩)
习惯先将两张表结合的方法就是下面的,先将两表结合再筛选;
select a.学号,a.姓名,a.课程名,a.成绩 from (select 学号,姓名,课程名,成绩 from xs join xs_kc using(学号) join kc using(课程号) group by 学号 having count(学号)>1 ) as a join (select 学号 from xs join xs_kc using(学号) join kc using(课程号) where 成绩 between 60 and 69 group by 学号) as b using(学号);
也可以使用子查询的办法,自己想。
ps:吐槽:学校老师讲的和shi一样完全是为了赶进度的上课,上课一大半时间念ppt还赶不上进度,教了和没教一样,专门偏向讲解课堂上的实验代码,主要是讲了也和没讲一样,那实验代码也只能处理一点点特定问题,不自己去悟的话根本没啥用。u1s1这ppt确实不错,示例也还行。不如把嘴巴闭上,课堂给学生自己探索下课能交实验代码就行了,总比叭叭叭讲了一个多钟,剩下20分钟让学生敲代码强.
下方具体学习sql语句执行顺序: