你好,请问 :odps有函数支持分组内排序后取组内第几条数值的吗?比如一个课程 有6节课,我要取第3节课
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
看下窗口函数 NTH_VALUE https://help.aliyun.com/document_detail/34994.html?spm=a2c4g.48969.0.0.402f6fd3AeNEse#section-0s4-vvp-zlj,此回答整理自钉群“MaxCompute开发者社区2群”
是的,ODPS支持分组内排序后取组内第几条数值的功能。您可以使用ROW_NUMBER函数和OVER子句来实现。
例如,如果您想要获取每个课程的第3节课,可以使用以下SQL语句:
SELECT * FROM ( SELECT *, ROW_NUMBER() OVER (PARTITION BY course_id ORDER BY lesson_id) AS rn FROM your_table ) t WHERE t.rn = 3; 以上SQL语句中,首先使用了子查询查询出每个课程下的所有课程,并使用ROW_NUMBER函数对每个分组内的数据进行排序(按照lesson_id升序排序)。然后,在外层查询中,我们只选择序列号为3的数据,即每个课程下的第3个课程。
MaxCompute(原ODPS)是一项面向分析的大数据计算服务,它以Serverless架构提供快速、全托管的在线数据仓库服务,消除传统数据平台在资源扩展性和弹性方面的限制,最小化用户运维投入,使您经济并高效的分析处理海量数据。