牛客SQL搞人心态的一天

异常的邮件概率

http://www.nowcoder.com/questionTerminal/d6dd656483b545159d3aa89b4c26004e

select
date,
cast( count(case when type='no_completed' then 1 else null end)*1.0 / count(id) as decimal(10,3)) 'p'
from email
where send_id in (select id from user where is_blacklist=0)
and receive_id in (select id from user where is_blacklist=0)
group by date;

两个in的效率不高,大规模数据可以用send_id和receive_id分别join两次user(虽然也挺亏的)
还有结果在sqlite跑不起来,小数点没有保留三位,虽然sqlite是可以用cast函数的。mysql结果正确。

全部评论
请问一下第三行没有 *1.0会不通过,这是什么原因呢?
点赞 回复 分享
发布于 2020-11-20 23:23
我稍微修改了一下代码,可以在sqlite里面跑了,效率的确不高 select date ,round(cast(count(case when type = 'no_completed' then 1 else null end) as double)/count(id),3) as p from email where send_id in (select id from user where is_blacklist = 0) and receive_id in (select id from user where is_blacklist = 0) group by date;
点赞 回复 分享
发布于 2021-09-28 20:45

相关推荐

粗心的雪碧不放弃:纯学历问题,我这几个月也是一直优化自己的简历,后来发现优化到我自己都觉得牛逼的时候,发现面试数量也没有提升,真就纯学历问题
点赞 评论 收藏
分享
totoroyyw:千年老妖😂
投递华为等公司10个岗位
点赞 评论 收藏
分享
4 收藏 评论
分享
牛客网
牛客企业服务