SQL练习,求商品价格为最近X天内最低价

#SQL面试#大佬们来帮帮孩子吧,写不出来浑身难受
商品表goods有三行数值:gid,price,date。表示商品每天的价格,求商品id在date日期时的价格price为最近X天内的最低价。
例:
gid,price,date
1,   4,       2023-08-01
1,   3,       2023-08-02
1,   2,       2023-08-03
1,   3,       2023-08-04
输出:
gid,price,date,X
1,   4,       2023-08-01,1(近一天最低价)
1,   3,       2023-08-02,2(近两天最低价)
1,   2,       2023-08-03,3(近三天最低价)
1,   3,       2023-08-04,1(近一天最低价)
全部评论
移动窗口函数,范围是之前所有天到今天,筛选最低价格min()over()
1 回复 分享
发布于 2023-08-25 10:01 安徽
with base_data as( SELECT '1' as gid, 4 as price, '2023-08-01' as dt UNION all SELECT '1' as gid , 3 as price, '2023-08-02' as dt UNION all SELECT '1' as gid , 2 as price, '2023-08-03' as dt UNION all SELECT '1' as gid , 3 as price, '2023-08-04' as dt ) select gid,price,dt,days as day -- 最近day天最小值 from ( select gid,price,dt,b_price,dt2,rn, COUNT() over(partition by gid,price,dt,res) as days from ( select gid,price,dt,b_price,dt2,rn,date_add('day',-rn,CAST(dt2 AS date)) as res from ( SELECT a.gid,a.price,a.dt,b.price as b_price,b.dt as dt2, row_number() over(partition by a.gid,a.dt order by b.dt) as rn from base_data as a left join base_data as b on a.dt >= b.dt where a.price <= b.price ) as t1 ) as t2 ) as t3 where dt = dt2 -- 不等值关联,过滤大于这个价格的数据,最后计算连续天数,最后再取最近的连续数据。
点赞 回复 分享
发布于 2024-03-16 23:08 上海
是不是这个意思 With base as ( Select id, price, date lag(price)over(partition by id order by price) as prcie1, lag(date)over(partition by id order by date) as date1 From a ) Select id,max(case when price>prcie1 then datediff(date,date2) then 0 end) From base Group by id
点赞 回复 分享
发布于 2023-10-19 02:12 黑龙江
有难度,没想出来怎么搞
点赞 回复 分享
发布于 2023-09-19 13:37 广东
一共要返回多少天的最低价呢?
点赞 回复 分享
发布于 2023-09-14 23:27 广东
SELECT gid,price,date,row_number() OVER(PARTITION BY gid,n1) X from( SELECT *,price-(min(price) over(PARTITION BY gid order by date rows BETWEEN unbounded preceding AND CURRENT ROW)) n1 from goods ORDER by gid,date)a
点赞 回复 分享
发布于 2023-09-04 10:47 北京

相关推荐

不愿透露姓名的神秘牛友
07-10 13:54
点赞 评论 收藏
分享
06-27 12:54
已编辑
门头沟学院 Java
累了,讲讲我的大学经历吧,目前在家待业。我是一个二本院校软件工程专业。最开始选专业是觉得计算机感兴趣,所以选择了他。本人学习计算机是从大二暑假结束开始的,也就是大三开始。当时每天学习,我个人认为Java以及是我生活的一部分了,就这样持续学习了一年半,来到了大四上学期末,大概是在12月中旬,我终于找的到了一家上海中厂的实习,但我发现实习生的工作很枯燥,公司分配的活也不多,大多时间也是自己在自学。就这样我秋招末才找到实习。时间来到了3月中旬,公司说我可以转正,但是转正工资只有7000,不过很稳定,不加班,双休,因为要回学校参加答辩了,同时当时也是心高气傲,认为可以找到更好的,所以放弃了转正机会,回学校准备论文。准备论文期间就也没有投递简历。然后时间来到了5月中旬,这时春招基本也结束了,然后我开始投递简历,期间只是约到了几家下场面试。工资也只有6-7k,到现在我不知道该怎么办了。已经没有当初学习的心劲了,好累呀,但是又不知道该干什么去。在家就是打游戏,boss简历投一投。每天日重一次。26秋招都说是针对26届的人,25怎么办。我好绝望。要不要参加考公、考研、央国企这些的。有没有大佬可以帮帮我。为什么感觉别人找工作都是顺其自然的事情,我感觉自己每一步都在艰难追赶。八股文背了又忘背了又忘,我每次都花很长时间去理解他,可是现在感觉八股、项目都忘完了。真的已经没有力气再去学习了。图片是我的简历,有没有大哥可以指正一下,或者说我应该走哪条路,有点不想在找工作了。
码客明:太累了就休息一下兄弟,人生不会完蛋的
如果实习可以转正,你会不...
点赞 评论 收藏
分享
半解316:内容充实,细节需要修改一下。 1,整体压缩为一页。所有内容顶格。 2,项目描述删除,直接写个人工作量 修改完之后还需要建议,可以私聊
点赞 评论 收藏
分享
评论
2
7
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务