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
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;