如图,如何获得一个用户 number 和大于等于 10 的那一条数据

本贴最后更新于 557 天前,其中的信息可能已经时移世异

image.png

现有一个数据表,需要获取同一个用户,number 累计达到大于等于 10 的那一条数据,也就是第 6 行和第 10 行。

大佬们这个 sql 怎么写。

  • SQL
    115 引用 • 290 回帖 • 3 关注
  • Q&A

    提问之前请先看《提问的智慧》,好的问题比好的答案更有价值。

    3035 引用 • 15832 回帖 • 494 关注
被采纳的回答
  • PeterChu
    id user_id number
    1 1 1
    2 1 2
    3 1 2
    4 1 4
    5 1 7
    6 1 2
    7 2 1
    8 2 3
    9 2 8
    10 2 6
    SELECT
    	* 
    FROM
    	(
    		SELECT
    			c.id,
    			c.user_id,
    			c.number,
    			sum( c.number ) over ( PARTITION BY c.user_id rows unbounded preceding ) AS f 
    		FROM
    			user001 c 
    	) r 
    WHERE
    	r.f >= 10 
    GROUP BY
    	r.user_id 
    ORDER BY
    	r.id;
    

    结果:
    image.png

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • Blackman99
    捐赠者 订阅者

    用代码它不香吗

  • 其他回帖
  • yang17762622
    作者

    这个项目是一个外包,在之前的开发基础上加一下功能,然后他们那边有个 review 代码的,然后每次提交他都会讲代码风格必须不一致,然后又把我们做的功能又改一遍trollface

    1 回复
  • yang17762622
    作者

    周末这几天给忘记了,问题已经解决了,代码计算了 😂

  • PeterChu 1 评论

    哦,我也愣了一下,他说的是累计,当用户 1 的 number 累计 =>10 时最后一个记录。

    搜 递归累加,应该可以解决
    PeterChu
  • 查看全部回帖