楼主: stella63
跳转到指定楼层
上一主题 下一主题
收起左侧

FB onsite 关于SQL window function的使用

 
🔗
anna2016 2019-2-28 14:01:26 | 只看该作者
全局:
lydia31358 发表于 2019-2-28 09:49
这个题为啥要用join? 我想的是:
Select count(distinct account) as n_first_fraud
from
.1point3acres
对,工作中从snapshot 里面找最早的数据就是用min(date). 我觉得你这样可以。

我第一个想法是用 where account not in previous_account
回复

使用道具 举报

🔗
 楼主| stella63 2019-2-28 14:05:29 | 只看该作者
全局:
lydia31358 发表于 2019-2-28 10:09
. 1point 3 acres我觉得row_number() over(partition by account order by date desc) as rk 这里面不应该有desc。。

对笔误了 应该是要找每个account 状态是fraud 最小的一天 不用加desc
回复

使用道具 举报

🔗
ysd2503 2019-2-28 14:13:59 | 只看该作者
全局:
stella63 发表于 2019-2-28 13:58
没有说不能用subquery
后来写的就是先找到今天是fraud的user left join 昨天是open的user,然后sum case ...

您好!
本帖隐藏的内容需要积分高于 150 才可浏览
您当前积分为 0。
使用VIP即刻解锁阅读权限或查看其他获取积分的方式
游客,您好!
本帖隐藏的内容需要积分高于 150 才可浏览
您当前积分为 0。
VIP即刻解锁阅读权限查看其他获取积分的方式
Unlock interview details and practice with AI
Curated Interview Questions from Top Companies
回复

使用道具 举报

🔗
ysd2503 2019-2-28 14:14:39 | 只看该作者
全局:
lydia31358 发表于 2019-2-28 10:06
请问用left join怎么写呢? 谢谢!

就是楼主后来回复里的思路
回复

使用道具 举报

🔗
 楼主| stella63 2019-2-28 14:19:14 | 只看该作者
全局:
ysd2503 发表于 2019-2-28 14:13
**** 本内容被作者隐藏 ****
. 1point 3 acres
是的,condition写在哪里都可以,应该没什么大的差别?
left join是要注意的,就像你说的有些account就是今天开的,直接被标记成fraud了
回复

使用道具 举报

🔗
 楼主| stella63 2019-2-28 14:19:39 | 只看该作者
全局:
anna2016 发表于 2019-2-28 14:01
对,工作中从snapshot 里面找最早的数据就是用min(date). 我觉得你这样可以。

我第一个想法是用 where ...
. 1point 3acres
学习到了,谢谢分享
回复

使用道具 举报

🔗
ysd2503 2019-2-28 14:35:11 | 只看该作者
全局:
stella63 发表于 2019-2-28 14:19
是的,condition写在哪里都可以,应该没什么大的差别?
left join是要注意的,就像你说的有些account就 ...

是的。大致框架出来,然后注意corner case就行。而且我认为你之前的思路也work,估计面试官expect 用join吧。这样有个left join考虑corner case的这么一个考点。
回复

使用道具 举报

🔗
yyy77 2019-2-28 15:03:58 | 只看该作者
全局:
学习到了!感谢!
回复

使用道具 举报

全局:
Select date, sum(if(usertype=fraud and spend>0,1,0)) /sum(if(spend>0).1,0) as percent group by date.
回复

使用道具 举报

🔗
stjobseeker 2019-3-5 03:36:40 | 只看该作者
全局:
select count(a.account)
from (select distinct account from account_id where status = 'fraud' and date = current_date()) a
left join  (select distinct account from account_id where status = 'fraud' and date < current_date()) b. 1point 3acres
on a.account = b.account. check 1point3acres for more.
where b.account is null
??
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

>
快速回复 返回顶部 返回列表