sql 修改列名_SQL 汇总分析

一.汇总分析

  1. count(列名):求某列的行数,不包含空值(null);count(*)求全部的行数,包含空值(null)
  2. sum(列名):对某列数据求和,只能对数值类型的列计算
  3. avg(列名):求某列数据的平均值,只能对数值类型的列计算
  4. max(列名):求某列数据的最大值
  5. min(列名):求某列数据的最小值
  • 注意
  1. 如果输入的是列名,在计算前会将空值Null排除在外。
  2. 如果在汇总时不想计算重复值,在汇总函数前面加distinct,先删除重复值在计算。

练习

sum, avg, max, min

select sum(成绩), avg(成绩), min(成绩), max(成绩)
from score;

distinct 去除重复值

select count(distinct 姓名)
from student;

45ff43911ca1989409f38435939c1947.png

练习:汇总分析

  1. 查询课程编号为“0002”的总成绩
  2. 查询选了课程的学生人数

33d462be565e15a198af3fbdee1574dd.png

e33daf849726b13fdc7a15106fa1cf11.png

二.分组 group by

加入分组后,sql执行顺序为:

  1. from:从哪张表中查询数据
  2. where:查询条件
  3. group by:分组
  4. select:查询结果

练习:

  • 查询各科成绩最高和最低的分

8f913df32c70eae18f0972d5c97f5b6a.png
  • 查询每门课程被选修的学生数

1c933663116f264b735ff0e0632d08ee.png
  • 查询男生、女生人数

9c0703beb83f1fe75d5e62d910f72a24.png

三.对分组结果指定条件having

加入了having子句,我们新的sql执行顺序为:

1.from:从那张表中查询数据

2.where:查询条件

3.group by:分组

4.having:对分组结果指定查询条件

5.select:查询结果

练习:

  • 查询平均成绩大于60分学生的学号和平均成绩

4f714e6cc592849ca3900b4056ad297b.png
  • 查询至少选修两门课程的学生学号

a336c6f4fe49cbb98f8bf34d35c2e01d.png
  • 查询同名同姓学生名单并统计同名人数

33c45da2d2e5894a7df07806fc318743.png

四.用sql解决业务问题

1.翻译成大白话

2.写出分析思路

3.写出对应的sql 子句

练习:如何计算每门课程的平均成绩,并且平均成绩大于等于80分

1.翻译问题

如题目,无需翻译

2.分析思路

select 查询结果,每门课程号、平均成绩avg(成绩)

from 从哪张表查询数据,score表

where 查询条件,无

group by 分组,以每个课程号作为分组条件

having 对分组结果指定条件,平均成绩>=80

3.写出sql

select 课程号,avg(成绩) from score

group by 课程号

having avg(成绩)>=80;

总结:

1.当我们看到关键字“每”,如每组,每个...需要用分组;

2.当我们看到关键字平均、个数,最大、最小...需要用汇总;

3.当我们看到关键字大于、小于、等于...需要用查询条件。

五.对查询结果排序order by + asc/desc

1.降序desc:从大到小

2.升序asc:从小到大,默认的排序

  • 同时我们也可以指定多个排序列名 order by <列名1> asc,<列名2> desc;
  • 对于含有空值(null)的列排序时,空值会在查询结果开头显示,方便查询表格中空值的情况

加入了order by子句,我们新的sql执行顺序为:

1.from:从那张表中查询数据

2.where:查询条件

3.group by:分组

4.having:对分组结果指定查询条件

5.select:查询结果

6.order by:对查询结果排序;

  • limit子句

从查询结果中取出指定行,我们引入新的子句limit

加入了limit子句,我们新的sql执行顺序为:

1.from:从那张表中查询数据

2.where:查询条件

3.group by:分组

4.having:对分组结果指定查询条件

5.select:查询结果

6.order by:对查询结果排序

7.limit:从查询结果中取出指定行

练习:

1.查询不及格的课程并按照课程号从大到小排

290d92e65ab8cabee20e68eebf6efe2c.png

2.查询每门课程的平均成绩,结果按平均成绩升序排列。平均成绩相同时,按课程号降序排列

cb2a9208e2c251399e874541c59fddb3.png

六.如何看懂报错信息

  • 常见错误1:

在group by/having中使用了select里as后的别名

因为select子句在group by/having子句之后执行,所以引用别名会报错

  • 常见错误2:

在where中使用聚合函数

在where子句用汇总函数运行会报错

  • 常见错误3:

字符串类型的数字

把表中要进行计算的列数据类型修改为数值之后在进行相关操作

继续sqlzoo练习(相对简单的入门难度sql,练习一下吧)

SELECT from Nobel Tutorial

SELECT from nobel

503d8e975c298a4cfca2c27263236ec4.png

e3a3ab5f13ca93c1da0ab13956ca0662.png

70a192303890c561e02f546eb54a21a2.png

aae66561bde497f3cad611d9f66f2230.png

e82ff83d649782847e8fb1c81ab055d2.png

e09665c043d234ab2621d729d5877d2e.png

7ee1af1c8659e42fefb7675e32886b50.png

c0f7edff232014ac4c433301ef06a190.png

c77e24c94467f5a905913ffe878d44a4.png

48c34b5bb69c8685d1eea43f83fbf63d.png

a63519e997b2f02b51abe9b2e3b1e3bc.png

e3c14d3f7685c66d687545aa368dee2b.png

ae4a55a2a5fec4bf5bff5c037675de24.png

8f8d1597876f155a7206bc9e785c3f26.png

SELECT from nobel

3f8a7872a646aaea119ff1ecfecbe912.png

e412f59d96f6457037cdb5e4f20aa4d7.png

f3f55eac13b6b547d3170dd152972b04.png

00f0d3dcf752429eee29a46455513fde.png

c0f8b13f53744b99d1dca0da08f1fb27.png

31a3e7eb9780586afc5b3435d555f94b.png

d110f5a34a1b5aa4660d230e397aabfb.png

f7054eb89e542a9a071c968b10bfe617.png
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值