Mysql查询语句技巧之一

1.    计算一个表中某个字段值在表中的占比

场景:

table: frequency

field:adv_id, user_id,dis_imp_pv, imp_pv,freq, uv

计算客户id为25的访客中竞价id去重浏览次数在10次以上的用户数占比

select a.adv_id,sum(a.pv) asTOTAL,avg(b.total_pv),

sum(a.pv)/avg(b.total_pv) as freq

from frequency a,

(select adv_id,sum(pv) as total_pv

from frequency b where adv_id=25

group by adv_id) b

where a.adv_id=b.adv_id

and a.advr_id=25 and cast(a.imp_pv as int)>= 11

group by a.adv__id;

 

相当于在原表中增加了一列新的总数列

 

可以优化,使用case when 语句

SELECT

sum(case when imp_pv > 3 then pv else 0end)/sum(pv)

from frequency WHERE advr_id=25;

简单整洁并且高效

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值