每分钟都会有数据插入,数据库表中有“净进园人数”的字段(可以是负数,表示此分钟出园多于进园),怎样快速计算出每一天哪一个时间点达到了最大在园人数。用C#代码去实现或者sql都行。
遍历一次.应该是没法再优化了
int 当前人数,最大人数;
foreach(出入记录)
当前人数+=出入人数;
if(当前人数>最大人数)最大人数=当前人数;
输出->最大人数;
最高的效率就是自定义聚合函数了
而这个函数的核心就是遍历一遍。。。
按照下面语句试一试呢,对人数做个降序,取第一条就是最大值
select * from 表名 order by 净进园人数字段 desc limit0,1
“每一天哪一个时间点达到了最大在园人数”,在园人数 是不是就是“净进园人数”?
“哪一个时间点”,表中的记录是不是每分钟就插入一条,也就是以分钟为单位的?
按我理解,表里面都有 净进园人数 和 时间点(以分钟记),要得到净进园人数最大的时间点,不需要什么额外计算,直接查表就行了。
order by max
遍历之后获取剩余人数吧
楼上的楼主要的是最大人数啊 不是进园最大人数啊
前提园子不是24小时开放
foreach 当天所有
计算取出