【 以下文字转载自 JobHunting 讨论区 】
发信人: superds2100 (superds), 信区: JobHunting
标 题: SQL某startup面经,顺便求指点
发信站: BBS 未名空间站 (Wed Aug 3 17:27:08 2016, 美东)
某startup面经,感觉挺难,似乎还可以优化一点,有大神路过帮忙指点一下。
上次就是SQL挂了,不是很很有信心。
postgresql. 要求按照signup操作系统,工作日周一到周五分类,分别列出用户注册后
一天内使用
app某功能人数和当天注册用户的百分比。一个t_requests的表有使用的记录,temp是
提取出来的有关用户的表。
with id_succeed as
(select temp.client_id
from t_requests as t inner join temp
on temp.client_id = t.client_id
where t.status = 'completed'
and
t.request_time is not null
group by temp.client_id
having min(t.request_time-temp.signup_time) < interval '24 hour'
)
select temp.OS_name, temp.day_id,
sum(
case when (s.client_id is not null) then 1
else 0
end
)*100.0/count(*) as percentage
from
temp left join id_succeed as s
on temp.client_id = s.client_id
group by temp.OS_name, temp.day_id
order by temp.OS_name, temp.day_id;