java 按日期分组 算法
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 按日期分组 算法相关的知识,希望对你有一定的参考价值。
有一批500件的货物,同一个月份生产,但日期不同,求一算法计算该月每天生产的货物数量。。如何实现?
不一定该月每天都有生产
id date(生产日期)
1 2号
2 3号
3 4号
4 2号
。 。
。 。
。 。
结果:
1号 0(可不进行统计)
2号 2
3号 1
4号 1
。 。
。 。
select count(id) as 数量,day(date) as 生产日期 from table group by day(date) order by day(czrq)
如果库里不止一个月的数据,那么再加个where条件 参考技术A 这个是数据库里面的内容?
那就select count(*),date from 表 group by date 参考技术B 都不知道你想在数据库里面算还是程序里面算。? 参考技术C 这些数据是存放在数据库的表里的吗,如果是可以用sql语句来解决 参考技术D 楼主如果还没有搞定,可以直接联系我,我帮你看看,这个很容易,
按日期分组Java
我有一个csv文件,其观察值约为500k,格式为“ date(LocalDate); hour; value; type”。我应该对这些数据执行操作,例如查找平均值,计算缺失值和日期间隔的值类型。
我可以在遍历字符串列表时构造每小时观察对象:
new HourlyObs(date,hour,val,type);
这些观察是每小时一次的(虽然由于某些数据丢失,每天不是24 obs),但是鉴于我应该实现的功能,我认为按日期对它们进行分组然后执行一些二进制搜索会更容易。
所以我的想法是创建一个对象数组,其中对象的设计如下:
class DailyObservation
private LocalDate date;
private ArrayList<HourlyObs>;
public float avgVal();
public int missingVals();
public float nrOfType();
是否有一种“简便”且有效的算法来创建这种日常观察数据?我无法解决这个问题,也不允许使用流进行聚合。非常感谢您的帮助。
答案
数据是否已排序?
如果已排序,则可以对其进行迭代,跟踪日期更改并相应地创建新对象。
[如果未对数据进行排序,那么最好的办法可能是创建一个地图,其中日期为键,DailyObservation
为值。对于数据的每个条目,请检查在给定日期的地图中是否已经存在对象。
另一答案
您可以设计如下:
class DailyObservation
private LocalDate date;
private Map<Integer, HourlyObservation> hourlyObservations = new HashMap<Integer, HourlyObservation>();
public float avgVal();
public int missingVals();
public float nrOfType();
public Map getHourlyObservations()
return hourlyObservations;
//Other setters and getters
在您的main
应用程序类中:
DailyObservation do = new DailyObservation();
do.getHourlyObservations().put("13", new HourlyObservation(do.getDate(), 13, some value, some type));
do.getHourlyObservations().put("14", new HourlyObservation(do.getDate(), 14, some value, some type));
以上是关于java 按日期分组 算法的主要内容,如果未能解决你的问题,请参考以下文章