Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql查询最小值和最大值,限制N分组_Mysql_Sql_Database_Max_Min - Fatal编程技术网

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);