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

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

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
根据数据库中的出生年份计算年龄
在实际运用中我们会遇到在数据库中加入用户出生年份,而界面想要显示年龄的需求。针对这个需求可以有多种实现方式,其中一个是在数据库查询语句中计算,如下: select distinct u.*, CAST(DATE_FORMAT(NOW(),'%Y') AS UNSIGNED INTEGER)-u.BIRTH_YEAR AS BIRTH_AGE from user as u;     但这种方
获取表中某一列的值出现的次数
有一张商品表,具体如下:
Java根据年份算出所属的生肖。
一个小程序~ public String getYear(Integer year){ if(year<1900){ return "未知"; } Integer start=1900; String [] years=new String[]{ "鼠","牛","虎","兔", "龙","蛇","马","羊", "猴","鸡","狗","猪"
SQL按年份月份统计数据
SQL按年份月份统计数据,使用了MySQL获取日期的指定值的函数EXTRACT(Type FROM Datetime)
shell脚本统计信息插到数据库中去
MYSQL_BIN="/usrl/local/mysql/bin/mysql" SQL_FILE="/root/sql/shop_sql" getids = `$MYSQL_BIN -u root -pming update_sql="update shop.sys_cache set cache_value='$getids'" where cache_key='prodsale';
Excel VBA 根据日期汇总统计另一字段非重复值的个数
Sub lqxs() Dim Arr, i&, x, y, z Dim d, k, t Set d = CreateObject("Scripting.Dictionary") Set s = CreateObject("Scripting.Dictionary") Sheet1.Activate [f:g].ClearContents Arr = [a1].CurrentRegio
C#中如何给GridView添加页脚以实现统计某一列值的和
第一步: 设置GridView的属性:ShowFooter=true 第二步: 定义一个全局变量,以备使用,如:private decimal thisTotal=0;//本页面合计 private decimal total=0;//共计然后在GridViewShow()函数中计算出这些值。自定义函数GridViewShow()用于实现GridView的数据绑定。 如GridView的格
js动态计算table某列值的总和
/**   *    * @tableId 表格id   * @numId 显示张数id   * @index 列数   * @first 首次标识   * @obj checkbox对象   */  function countNum(tableId, numId, index, first,obj) {       var sumStr = document.getElementById(numId);       //当前行进行加减       if (null != obj) {          
Oracle根据年份提取出年月日并分组
select extract(year from 时间字段 ) year from 表名 GROUP BY extract(year from 时间字段 ) 解释:extract(year from 时间字段) 获取相应的年份 得到的结果为数值类型的。year也可以换成month和day获取月和日           GROUP BY extract(year from 时间字
Oracle 统计某一年中的1-12个月的数据总和(非常实用)
Oracle 统计某一年中的1-12个月的数据总和(非常实用)