【发布时间】:2020-01-30 23:05:02
【问题描述】:
谁能帮帮我,我卡在这里了。
给定
AMOUNT CUSTOMER_NUMBER GROUPID SEQF
1000+ 5555 51 2
1000+ 5555 52 3
1000+ 5555 55 4
1000+ 5555 56 4
1000+ 5555 57 4
1000+ 5555 58 2
1000+ 5555 59 4
1000+ 5555 61 2
2000+ 6666 55 2
.
.
.
.
通过考虑 AMOUNT 和 CUSTOMER_NUMBER 列,这里在 7 个 GROUPID 数字内创建组
例如 第 1 组为 5555 CUSTOMER_NUMBER ->(51 到 57 组 ID),第 2 组为 5555 CUSTOMER_NUMBER(58 到 61 组 ID),第 3 组为 6666 CUSTOMER_NUMBER(55 组 ID)
需要:
如果 SEQF >=2 在 51 到 57 的任何 GROUPID 中的第一个组中,则考虑 COUNT(SEQF) = 1
如果 SEQF >=2 在 58 到 61 的任何 GROUPID 中的第 2 组中,则考虑 COUNT(SEQF) = 1
这里很全面
AMOUNT CUSTOMER_NUMBER COUNT(SEQF)
1000+ 5555 2
如果 SEQF >=2 在第 3 组中的任何 GROUPID 中的 55 中,则考虑 COUNT(SEQF) = 1
AMOUNT CUSTOMER_NUMBER COUNT(SEQF)
2000+ 6666 1
期望的输出
AMOUNT CUSTOMER_NUMBER COUNT(SEQF)
1000+ 5555 2
2000+ 6666 1
【问题讨论】:
-
您使用的是 Oracle 还是 MySQL?你标记了两者,也许是偶然的?如果你用 MySQL,你用的是什么版本?
-
groupid的组是否已固定,例如第一组总是51到57?还是按groupid的顺序只装7 个?如果有,是否有差距,如果有差距怎么办——无论差距与否,都取 7? -
是的,它是 Oracle。我错误地标记了mysql。它是按 groupid 顺序排列的 7 包。另外,我们必须考虑到要取 7 的差距。