根据您的DBMS,类似这样的方法将起作用:
SELECt ChunkStart = Min(Id), ChunkEnd = Max(Id), Value = Avg(Value)FROM ( SELECt Chunk = NTILE(5) OVER (ORDER BY Id), * FROM YourTable ) AS TGROUP BY ChunkORDER BY ChunkStart;
无论您有多少行,这都会创建5个组或块。
如果您没有开窗功能,则可以伪造它:
SELECt ChunkStart = Min(Id), ChunkEnd = Max(Id), Value = Avg(Value)FROM YourTableGROUP BY (Id - 1) / (((SELECt Count(*) FROM YourTable) + 4) / 5);
我在这里做了一些假设,例如
Id从1开始并且没有间隔,并且如果事情没有平均分配,那么您将希望最后一组太小而不是太大。我还假设整数除法将导致在MS SQL
Server中。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)