📣 Back to School开学季 - VIP通行证5折优惠!蓝莓、Offer多多同步优惠
查看: 2717| 回复: 5
跳转到指定楼层
上一主题 下一主题
收起左侧

[其他] 讨论一道sql题

全局:

注册一亩三分地论坛,查看更多干货!

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

x
最近在hackerrank上练习sql, 有一道题一直卡壳没思路,想请地里的朋友分享一下看法。

这道题目是15 Days of Learning SQL, 难度hard, 顺便附上一下链接:https://www.hackerrank.com/chall ... earning-sql/problem

其中卡壳的地方是“Write a query to print total number of unique hackers who made at least  submission each day (starting on the first day of the contest)..." 貌似是要求从第一天开始累积的所有每天提交答案至少一次的id的count,所以这个数应该是随着时间而减少的。但是用Sql如何实现,我始终没有思路。

一个思考方向是用window function, 但是很奇怪hackerrank的Mysql不让我用window function不知道为什么。

真心求教地里的小伙伴提供思路,多谢!

上一篇:刷题速度
下一篇:新人请教
推荐
zk2424 2019-8-29 10:10:14 | 只看该作者
全局:
本帖最后由 zk2424 于 2019-8-29 10:51 编辑

select t1.submission_date,count(t1.hacker_id)  from
(Select DATEDIFF(a.submission_date,'2016-03-01')+1 as n,a.submission_date,a.hacker_id,count(distinct b.submission_date) as d
from submissions a
left join submissions b
on a.hacker_id=b.hacker_id where a.submission_date>=b.submission_date
group by a.submission_date,a.hacker_id)t1     where n=d           group by submission_date

我只写了你要求的这个部分,剩下那个每天最多提交次数的就再写个query join过去就行了你应该懂就不写了。

思路就是,对某个日期下的某个ID,统计其在这个日期之前的日子里至少提交一次的天数,如果这个天数与总天数相等,就说明这个ID每天都至少提交了一次。


这是在join后,第一次group之前,之后group就是把右边所有天数count一下


这是第一次group之后,最左边栏的天数等于最右边栏的天数的ID就是目标ID


然后再group一次,把每个日期中左边天数和右边天数相等的ID数一下就是最后结果,当然这只是答案的左半边部分,右半边部分你需要再join一个query



评分

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

查看全部评分

回复

使用道具 举报

全局:
可以麻烦楼主把题目截图发一下嘛 没有account看不到题。。。
回复

使用道具 举报

🔗
 楼主| myc815 2019-8-31 10:55:30 | 只看该作者
全局:
zk2424 发表于 2019-8-29 10:10
select t1.submission_date,count(t1.hacker_id)  from
(Select DATEDIFF(a.submission_date,'2016-03-01' ...

大神,请你接受我的膜拜吧!你code中那个"where n = d" 是我永远也想不出来的思路,感觉智商被碾压了。

self join且 a.submission_date >= b.submission_date这个我想出来了,但是我死活也想不出如何找出之前累积每天提交的hacker_id,感觉看了你的code智商瞬间被碾压了。
回复

使用道具 举报

🔗
 楼主| myc815 2019-8-31 11:04:57 | 只看该作者
全局:
冷月无声 发表于 2019-8-28 02:18
可以麻烦楼主把题目截图发一下嘛 没有account看不到题。。。


回复

使用道具 举报

🔗
漾yang 2020-5-31 04:11:43 | 只看该作者
全局:
mark great solution
回复

使用道具 举报

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

本版积分规则

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