面试经常会遇到的SQL中分组函数和子查询

SQL中分组函数和子查询

SQL函数分为字符串函数、数学函数、日期时间函数、分组函数。在这几大SQL函数中分组函数最为重要也是最为常见的函数,其他函数只需大致了解一下就行。
1、字符串函数其实就是对字符串的类型转换、对字符串大小写转换、对字符串的删除和截取以及对字符串的替换。在字符串类型转换中重点注意一下cast和convert类型转换。
2、数学函数就三个函数分别为:round 返回数字表达式并且进行四舍五入、rand 返回0-1直接随机float值、abs 返回给定数字表达式的绝对值。
3、日期时间函数,主要是对日期和时间的操作。可在指定日期上加一段时间间隔(dateadd),返回指定日期的指定日期部分的整数(datepart)、返回当前系统日期和时间 ( getdate) 、返回表示当前通过协调时间或格林尼治标准时间 ( getutcdate)。

其他函数大致了解之后我们来看看我们的重点函数—分组函数。分组函数主要是对大量数据的细分,也就是对数据以组的形式进行划分。
1、 Sum:数据的和,多组数据进行运算后的结果。使用方法:select sum(需要的字段) from 数据表格;
2、 Max、Min:最大值(max)和最小值(min),类似于数学中的最大值与最小值。使用方法:select max(需要的字段),min(需要的字段) from 数据表格;
3、 Avg:平均值,也是类似数学中的平均值。使用方法:select avg(需要的字段) from 数据表格;
4、 Count:数据的数量,统计数据的条数。使用方法:select count(需要的字段) from 数据表格;

分组函数的注意事项:
1、 Sum函数对于NULL值默认为0。
2、 Avg函数不统计空值。
3、 区分sun函数和count函数,前者是数据运算后的值,后者是数据的条数。
4、 只要查询是有一个使用到了分组函数,其余没有使用函数的需要在group by 中使用,否则会报错误
在这里插入图片描述
上图就是一个使用到了分组函数,其余没有使用函数的需要没在group by 中使用。执行代码后所报的错误。

正确代码执行后截图:与报错代码对比,正确代码就是多了group by 语句,再加上对结合集的升序排序。
在这里插入图片描述
使用分组函数后查询语句先后顺序
执行顺序:
1.from 找到查询语句执行的数据源
2.where 根据条件筛选数据
3.group by 对数据进行分组
4.having 使用了group by 语句之后不能在进行where子句,只能使用having
5.根据select 关键之后的要显示的字段,进行结果集显示
6.order by 对最终结果集进行排序 ,默认排序为升序(asc),倒叙排序为 desc
7.top/dictinct 显示前多少条数据或者精准显示数据

SQL子查询:在查询语句中包含着有另外一条查询语句,被包含的查询语句称为子查询,包含着子查询的查询就称为父查询。子查询又称内查询, 在主查询之前子查询一次执行完成。子查询的结果被主查询(也称外查询)使用。总之,子查询就是在查询语句里嵌套一条或者多条查询语句。

在这里插入图片描述
红色圈中部分为子查询,蓝色圈中部分为父查询。子查询是嵌套在父查询当中的,父查询是一套基本查询方法,子查询也是一套基本查询方法,只是子查询作为了父查询的where查询条件查询数据。
子查询又分为单行子查询和多行子查询,单行子查询只有一个子查询语句,也就是在父查询的基础上嵌套一套基本查询语句;多行子查询是在父查询的基础上嵌套两套或者多套基本查询语句。

下图是多行子查询语句,其中红色部分为第一套子查询,蓝色部分为第二套子查询,每一套子查询语句使用and 连接
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值