SQL中的AVG函数

avg

avg函数是一个聚合函数,用于计算集合的平均值,语法:

AVG([ALL|DISTINCT] expression)

默认使用all关键字,avg函数将获取计算字段中的所有值

使用distinct关键字,avg函数仅计算字段中的唯一的值

eg:一组集合number(1,2,3,3,4)

avg(all number),函数将执行:

(1+2+3+3+4)/5 = 2.6

avg(distinct number),函数将执行:

(1+2+3+4)/4 = 2.5

使用条件语句:

avg(event_date is not null)
或者
avg(if(event_date is not null,1,0))

avg(event_date is not null)这部分语句就等于avg(a.event_date is not null) = sum(if(a.event_date is not null, 1, 0))/count(*)

当使用 AVG 函数时,它首先会计算条件表达式为真(即非空的 event_date)的行的数量,然后除以总行数,得到条件为真的行的比例。

完整示例代码,对应力扣题号:550. 游戏玩法分析 IV

select round(avg(Activity.event_date is not null),2) as fraction
from (
    select player_id,min(event_date) as lag_date
    from Activity
    group by player_id
) t left join Activity
on t.player_id = Activity.player_id
and datediff(Activity.event_date,t.lag_date)=1;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值