2 lingting1995 lingting1995 于 2015.07.20 15:36 提问

怎么根据年份统计数据库中各列的总值
ant

数据库里面只有时间字段(包括年月日),资产名称,资产数量,资产金额,学校名称,怎样
按年度统计统计每年学校的资产总数,总金额,会的能提点下么?,求指点,能告诉大概
的方法,思路都好,在线等,谢谢 (java)

3个回答

danielinbiti
danielinbiti   Ds   Rxr 2015.07.20 16:05
已采纳
 class Record{
    private String dateStr = "";
    private String schoolName = "";
    private int money = 0;
    public Record(String dateStr,String schoolName,int money){
        this.dateStr = dateStr;
        this.schoolName = schoolName;
        this.money = money;
    }
    public String getYear() {
        return dateStr.split("-")[0];
    }
    public String getSchoolName() {
        return schoolName;
    }
    public int getMoney() {
        return money;
    }

}
public class Test { 
    public List<Record> init(){
        List<Record> list = new ArrayList();
        list.add(new Record("2015-01-01","学校A",200));
        list.add(new Record("2015-02-01","学校A",300));
        list.add(new Record("2015-03-01","学校A",400));
        list.add(new Record("2015-01-01","学校B",200));
        list.add(new Record("2015-01-01","学校B",600));
        list.add(new Record("2015-02-01","学校B",800));
        return list;
    }
    public HashMap<String,HashMap<String,Integer>> tongJi(List<Record> list){
        HashMap<String,HashMap<String,Integer>> rstMap = new HashMap();
        for(int i=0;i<list.size();i++){
            Record rd = list.get(i);
            if(rstMap.get(rd.getYear())==null){
                rstMap.put(rd.getYear(),new HashMap());                 
            }
            HashMap<String,Integer> schoolMap= rstMap.get(rd.getYear());
            if(schoolMap.get(rd.getSchoolName())==null){
                schoolMap.put(rd.getSchoolName(),0);      
            }
            Integer value = schoolMap.get(rd.getSchoolName());
            value = value + rd.getMoney();
            schoolMap.put(rd.getSchoolName(),value);      
        }
        return rstMap;
    }
    public void print(HashMap<String,HashMap<String,Integer>> rstMap){
        Iterator  iter1 = rstMap.keySet().iterator();
        while(iter1.hasNext()){
            String year = (String)iter1.next();
            HashMap<String,Integer> schoolMap= rstMap.get(year);
            Iterator iter2 = schoolMap.keySet().iterator();
            while(iter2.hasNext()){
                String schoolName = (String)iter2.next();
                int value = schoolMap.get(schoolName);
                System.out.println("year="+year+",school="+schoolName + ",金额="+value);
            }
        }
    }

    /**
     * @param args
     */
    public static void main(String[] args) {
         Test t = new  Test();
         List<Record> list = t.init();
         HashMap map = t.tongJi(list);//统计
         t.print(map);
    }

}
danielinbiti
danielinbiti 回复lingting1995: 如果有帮助,有时间顺手采纳一下吧
2 年多之前 回复
lingting1995
lingting1995 很感谢,有这个平台真好!
2 年多之前 回复
lingting1995
lingting1995 很感谢,有这个平台真好!
2 年多之前 回复
danielinbiti
danielinbiti   Ds   Rxr 2015.07.20 15:38
 select sum(资产金额) from 表 group by 学校名称,年份(日期取年,数据库都有对应的函数)
lingting1995
lingting1995 回复danielinbiti: 嗯嗯
2 年多之前 回复
danielinbiti
danielinbiti 回复lingting1995: 。。。。好吧,那就不是数据库,是list数据吧
2 年多之前 回复
lingting1995
lingting1995 回复danielinbiti: 那个,要怎么从一个List里面取,那些数据好像是存在一个List对象里面的?,谢
2 年多之前 回复
danielinbiti
danielinbiti 回复lingting1995: 时间字段 取年,对应数据库都有相应的函数
2 年多之前 回复
lingting1995
lingting1995 谢谢,那个日期取年!!!
2 年多之前 回复
notfindjob
notfindjob   2015.07.25 17:58

sql中的sum(字段名)就能实现这个功能

Csdn user default icon
上传中...
上传图片
插入图片