所以我有一个看起来像这样的表:
SITE LOWER UPPER SIZE
a.com 0.1 0.2 10
a.com 0.2 0.3 10
a.com 0.3 0.4 10
a.com 0.7 0.8 10
a.com 0.9 1.0 10
b.com 0.1 0.2 20
a.com 0.6 0.7 30
我想要的输出是:
SITE LOWER UPPER SIZE
a.com 0.1 0.4 10
a.com 0.7 1.0 10
b.com 0.1 0.2 20
a.com 0.6 0.7 30
因此,对于SITE
和SIZE
对,我需要压缩LOWER
和UPPER
值,其中按行分组的LOWER
是最小的第一行和UPPER
是最后一行的最大值。LOWER
和UPPER
就像某些存储桶的上下限值(例如[0.1,0.2]),我只需要连续的桶将被压缩在一起。在这方面的任何帮助将不胜感激。
答案 0 :(得分:2)
您可以使用变量将组ID分配给相邻的行:
.nav-tabs li.active a{
display: block;
background-color: tomato !important;
}
然后您可以汇总以获得所需的内容:
select t.*,
(@grp := IF(@sru = CONCAT_WS(':', site, rev, lower),
IF(@sru := CONCAT_WS(':', site, rev, upper), @grp, @grp),
IF(@sru := CONCAT_WS(':', site, rev, upper) , @grp + 1, @grp + 1)
)
) as grp
from (select t.*
from t
order by site, size, lower
) cross join
(select @grp := 0, @sru := '') params;
Here是一个SQL提琴。