牛客大厂真题

159

有点难度

sum over,详见sum() over() 函数用于累加计算

160

子查询

窗口函数是什么?

窗口函数与数据分组功能相似,可指定数据窗口进行统计分析,但窗口函数与数据分组又有所区别,窗口函数对每个组返回多行,而数据分组对每个组只返回一行;窗口函数指定分析函数工作的数据窗口大小,这个数据窗口大小可能会随着行的变化而变化,而数据分组是针对所有数据进行统计,窗口函数的写法如下。

<窗口函数> over (partition by <用于分组的列名>order by <用于排序的列名>)

窗口函数主要有两种,一种是专用窗口函数,包括rank、dense_rank、row_number等。另一种是聚合函数,包括sum、avg、count、max、min等,下面逐一介绍窗口函数的五个功能,分别是聚合、排序、极值、移动、切片。

详见:

SQL进阶,子查询与窗口函数

窗口函数执行顺序:

①正常情况下sql语句的执行顺序为
from - join - where - group by - having - select - order by - limit

②窗口函数的执行顺序(逻辑上)在from,join,where,group by,having之后,在order by,limit,select,distinct之前。

本题后面的where是对前面已经完成计算后的条件筛选,如果这里将where子句跟窗口函数放在同一个层级,按照SQL的执行顺序,就应该是先进行where再进行窗口计算,这明显不是我们需要的逻辑。

174

group by一定要配合聚合函数使用嘛?

group by 就是分组统计的意思,一般情况都是配合聚合函数 如(count(),sum(),avg(),max(),min())一起使用。

  • count() 数量
  • sum() 总和
  • avg() 平均
  • max() 最大值
  • min() 最小值

如果没有配合聚合函数使用可以吗?

我用的是 Mysql 5.7 ,是可以的。不会报错,并且返回的是,分组的第一行数据。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值