```sql
select t1.video_id,
round((100*t1.wbl+5*t1.dz+3*t1.pl+2*t1.zf)*t1.xxd) hot_index
from
(
select log.video_id,count(log.if_like) dz,count(if_retweet) zf,
count(comment_id) pl,
avg(case when timestampdiff(second,log.start_time,log.end_time)>=info.duration then 1 else 0 end) wbl,
1/(datediff((select max(end_time)from tb_user_video_log),max(log.end_time))+1) xxd
from tb_user_video_log log
join tb_video_info info
on log.video_id=info.video_id
where datediff(max(log.end_time),info.release_time)<=29
group by log.video_id
) t1
order by hot_index desc
limit 3
Invalid use of group function这个报错
但是我group by前面的where条件是为了筛选掉分组前end_time整一列里面最大的时间和release_time相差小于29的数据,就是不用分组,但是给我报这个错,难道group by前面的where筛选不能有任何聚合字段吗,即使聚合的是一整个字段?
```
GROUP BY 后面 加HAVING 跟着条件不就行了 执行顺序是先where 筛选 然后在group By 聚合的
having 只能在聚合函数后面