我选择了需要标识范围内值组的位置。但是选择工作不可靠。我在内部使用CASE WHEN
时遇到问题...目标是用唯一的分组值标记每个连续的值系列。我期望这样:
当列的值在范围内时,则不更改组号
ELSE将组号加1
我不知道怎么了。谢谢大家的建议。
SELECT *
, CASE WHEN value >= 17 AND value <= 18 THEN @x=@x ELSE @x=@x+1 END grp
FROM my_table
我希望:
value grp
18.9607 0
17.8623 1
17.0396 1
19.8252 2
19.746 3
但是我得到了
value grp
18.9607 null
17.8623 null
17.0396 null
19.8252 null
19.746 null
实际上所有grp值都为空
答案 0 :(得分:0)
如果您尝试枚举“中断”为17到18之间的值,我建议:
select t.*,
(@grp := if(value >= 17 and value <= 18, @grp,
@grp + 1
)
) as grp
from my_table t cross join
(select @grp := 0) params;
您可以直接在查询中初始化值。