Mysql查询最小值和最大值,限制N分组
我想问一些关于查询的问题 这就是我的情况: 结构表 数据库中的示例数据:Mysql查询最小值和最大值,限制N分组,mysql,sql,database,max,min,Mysql,Sql,Database,Max,Min,我想问一些关于查询的问题 这就是我的情况: 结构表 数据库中的示例数据: Code Prize BatchNumber Category 1000000231 TRY AGAIN 1 A 1000000238 TRY AGAIN 2 A 1000000376 TRY AGAIN 3 A 1000000473 TRY AGAIN 4 A 1000000934 50
Code Prize BatchNumber Category
1000000231 TRY AGAIN 1 A
1000000238 TRY AGAIN 2 A
1000000376 TRY AGAIN 3 A
1000000473 TRY AGAIN 4 A
1000000934 50 5 A
1000001281 50 6 B
1000001894 50 7 B
1000002014 TRY AGAIN 8 B
1000002831 TRY AGAIN 9 B
1000003123 TRY AGAIN 10 B
1000003158 TRY AGAIN 11 C
1000003224 TRY AGAIN 12 C
1000003524 TRY AGAIN 13 C
1000003598 50 14 C
1000003616 TRY AGAIN 15 C
1000003657 TRY AGAIN 16 A
1000003959 50 17 A
1000004289 TRY AGAIN 18 A
1000004529 TRY AGAIN 19 A
1000004853 TRY AGAIN 20 A
1000005683 TRY AGAIN 21 B
1000005728 100 22 B
1000005816 TRY AGAIN 23 B
1000006325 TRY AGAIN 24 B
我想得到每5行的最小和最大批号。
那么如何得到如下查询结果:
Category MinBatch MaxBatch
A 1 5
B 6 10
C 11 15
A 16 20
B 21 24
请帮助,谢谢下面的查询将为您提供结果
select category, min(batchnumber)as 'MinBatch', max(batchnumber)as 'MaxBatch'
from tablename order group by (category)
假设
batch
表示确定5个组的顺序,可以使用变量执行此操作:
select category, min(batch), max(batch)
from (select s.*, (@rn := @rn + 1) as rn
from structure s cross join
(select @rn := 0) params
order by batch
) s
group by floor((rn - 1) / 5)
order by min(batch);
实际上,如果您知道批次是连续的,没有间隙,并且从1开始:
select category, min(batch), max(batch)
from structure s
group by floor((batch - 1) / 5)
order by min(batch);
你不能通过mysql函数来实现这一点!!如果批次号和类别连续出现且顺序正确,则可以求和值:)
select category, min(batch), max(batch)
from structure s
group by floor((batch - 1) / 5)
order by min(batch);