一亩三分地

 找回密码 注册账号

扫描二维码登录本站


Salarytics=Salary Analytics
查询工资数据
系统自动计算每年收入

科技公司如何
用数据分析驱动产品开发
coupon code 250off 立减$250

深入浅出AB Test
从入门到精通
coupon code 250off 立减$250
游戏初创公司招聘工程师、UIUX Designer和游戏策划
坐标湾区
DreamCraft创始团队
招聘游戏开发工程师
把贵司信息放这里
查看: 2876|回复: 34
收起左侧

贡献Linkedin 一道 SQL 题目的简单解法

[复制链接] |试试Instant~ |分析|数据科学类, linkedin, 数科面经, 面试经验
我的人缘0

分享帖子到朋友圈
workasDS | 显示全部楼层 |阅读模式
本楼: 👍   0% (0)
 
 
0% (0)   👎
全局: 👍   97% (40)
 
 
2% (1)    👎

2019(7-9月) 分析|数据科学类 博士 全职@Linkedin - 内推 - 技术电面  | Other | 其他
一道linkedin的经典店面SQL题目,mobile,desktop,both的那道题最近在复习sql,特意找了地里所有的题目来做,
看了地里的帖子一度怀疑自己的code写错了,然后专门找了一个可以测试的网站,亲测这个超级好用 https://www.jdoodle.com/execute-sql-online

现把code和答案贴在这里,希望对大家有用


游客,本帖隐藏的内容需要积分高于 188 才可浏览,您当前积分为 0。
查看如何攒积分 Click here for more info.





补充内容 (2019-7-13 09:29):
看了大家的评论发现是我理解错题目了,以为只需要一天一个输出,both代表那天mobile和desktop都有,mobile_only代表那一天只有mobile。

补充内容 (2019-7-13 09:45):. From 1point 3acres bbs
如果每天三行硬性要求的话,修改了code在下面
https://www.1point3acres.com/bbs ... 750&pid=7380690. 1point3acres

补充内容 (2019-7-13 10:28):
https://www.1point3acres.com/bbs ... 750&pid=7380983

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册账号

x

评分

参与人数 5大米 +35 收起 理由
tzuyiyen + 2 很有用的信息!
starzero + 1 给你点个赞!
清道神君 + 30
oliviapanh + 1 赞一个
xujw07 + 1 给你点个赞!

查看全部评分


上一篇:详细WeWork Seattle DS Onsite面经+感受
下一篇:莫名其妙的Point72电面挂经
我的人缘0
Frances0412 2019-7-13 07:11:23 | 显示全部楼层
本楼: 👍   0% (0)
 
 
100% (2)   👎
全局: 👍   96% (218)
 
 
3% (7)    👎
anna2016 发表于 2019-7-13 05:45
谢谢分享,您这答案跟那道题的expected output 不一样啊

The output data is

LZ假设的输入不一样而已啦

评分

参与人数 1大米 +2 收起 理由
zhang.chi1 + 2 lz的答案return是和题目要求不一样的,所以.

查看全部评分

回复

使用道具 举报

我的人缘0
Frances0412 2019-7-16 13:56:14 | 显示全部楼层
本楼: 👍   100% (1)
 
 
0% (0)   👎
全局: 👍   96% (218)
 
 
3% (7)    👎
workasDS 发表于 2019-7-13 10:21
重新梳理一下对这道题的理解, both那一行是需要count有多少个member_id同时有mobile和desktop的记录,并且 ...
. 1point3acres
感觉这么写貌似还是不对呢~

你刚开始那个考虑都没有就是0的情况就不对哦~ 这样子不但没有header,而且也没办法显示没有both的情况呢~~然后both的情况你也多count了~

贴一个可以run出正确结果的~
SELECT d.date, c.channel, coalesce(total_spend, 0) as total_spend, coalesce(total_members, 0) as total_members
FROM. 1point3acres
(select distinct date from spending) d
cross join. check 1point3acres for more.
(select 'both' as channel union select 'mobile' union select 'desktop') c
left join
(SELECT a.date, CASE WHEN chn_count = 2 then 'both' ELSE channel END as channel,
       sum(spend) as total_spend, count(distinct a.member_id) as total_members
FROM spending a
inner join
(SELECT member_id, date, count(distinct channel) as chn_count
FROM spending
group by member_id, date) b
using (member_id, date)
group by date, CASE WHEN chn_count = 2 then 'both' ELSE channel END) data
using (date, channel)
回复

使用道具 举报

我的人缘0
 楼主| workasDS 2019-7-13 04:00:16 | 显示全部楼层
本楼: 👍   100% (1)
 
 
0% (0)   👎
全局: 👍   97% (40)
 
 
2% (1)    👎
睿睿睿 发表于 2019-7-13 03:57. From 1point 3acres bbs
请问这是什么题呀 有题目吗 弱弱问一句怎么在地里找sql题做呀 谢谢楼主!

题目可以参考这个 https://www.1point3acres.com/bbs ... science-433726.html
回复

使用道具 举报

我的人缘0
 楼主| workasDS 2019-7-13 03:59:20 | 显示全部楼层
本楼: 👍   100% (1)
 
 
0% (0)   👎
全局: 👍   97% (40)
 
 
2% (1)    👎
睿睿睿 发表于 2019-7-13 03:57
请问这是什么题呀 有题目吗 弱弱问一句怎么在地里找sql题做呀 谢谢楼主!

看大家分享的Linkedin的店面一面面经
回复

使用道具 举报

我的人缘0
elitist777 2019-7-12 21:17:53 | 显示全部楼层
本楼: 👍   100% (1)
 
 
0% (0)   👎
全局: 👍   99% (108)
 
 
0% (1)    👎
游客,本帖隐藏的内容需要积分高于 100000 才可浏览,您当前积分为 0。
查看如何攒积分 Click here for more info.
回复

使用道具 举报

我的人缘0
睿睿睿 2019-7-13 03:57:46 | 显示全部楼层
本楼: 👍   0% (0)
 
 
0% (0)   👎
全局: 👍   100% (9)
 
 
0% (0)    👎
请问这是什么题呀 有题目吗 弱弱问一句怎么在地里找sql题做呀 谢谢楼主!
回复

使用道具 举报

我的人缘0
睿睿睿 2019-7-13 04:43:09 | 显示全部楼层
本楼: 👍   0% (0)
 
 
0% (0)   👎
全局: 👍   100% (9)
 
 
0% (0)    👎
workasDS 发表于 2019-7-13 03:59
看大家分享的Linkedin的店面一面面经

感谢感谢!!
回复

使用道具 举报

我的人缘0
anna2016 2019-7-13 05:45:57 | 显示全部楼层
本楼: 👍   0% (0)
 
 
0% (0)   👎
全局: 👍   100% (36)
 
 
0% (0)    👎
谢谢分享,您这答案跟那道题的expected output 不一样啊

The output data is
date      |     channel  |  total_spend  |  total_members
1/1/2018    desktop     100                       1
1/1/2018    mobile       100                       1
1/1/2018    both           200                       1
1/2/2018    desktop     100                        1
1/2/2018    mobile       100                        1
1/2/2018    both           0                            0

评分

参与人数 1大米 +2 收起 理由
zhang.chi1 + 2 lz答案不完全正确,当1/1既有desktop也有mo.

查看全部评分

回复

使用道具 举报

我的人缘0
Frances0412 2019-7-13 07:52:11 | 显示全部楼层
本楼: 👍   0% (0)
 
 
0% (0)   👎
全局: 👍   96% (218)
 
 
3% (7)    👎
不过我觉得LZ写得确实有问题~要求的output里貌似需要每天都输出3个channel,即使没有数据。
如果这是硬性要求的话,应该再加一个left join列出所有日期和channel的组合:

评分

参与人数 1大米 +2 收起 理由
zhang.chi1 + 2 很有用的信息!

查看全部评分

回复

使用道具 举报

我的人缘0
zhang.chi1 2019-7-13 08:02:51 | 显示全部楼层
本楼: 👍   0% (0)
 
 
0% (0)   👎
全局: 👍   92% (61)
 
 
7% (5)    👎
本帖最后由 zhang.chi1 于 2019-7-13 08:04 编辑
Frances0412 发表于 2019-7-13 07:52
不过我觉得LZ写得确实有问题~要求的output里貌似需要每天都输出3个channel,即使没有数据。
如果这是硬性 ...

嗯是的,如果是要求每个date有三个row分别是3个 channel。用一个简单的union也可以实现
如果一定要按照顺序desktop,mobile,both,最后加一个order by就可以了,求多多交流。加米谢谢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

隐私提醒:
■为防止被骚扰甚至人肉,不要公开留微信等联系方式,请以论坛私信方式发送。
■特定版块可以超级匿名:https://pay.1point3acres.com/tools/thread
■其他版块匿名方法:http://www.1point3acres.com/bbs/thread-405991-1-1.html

手机版||一亩三分地

GMT+8, 2019-12-12 17:29

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

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