SQL统计功能的Java实现
2007-01-13 02:17
525 查看
常常碰到类似于SQL中的分组,排序和统计的实现,实现的方法很多,通常是将待统计的数据放入数据集合(array,list,map,etc.),然后根据条件进行分组(group by),或者需要排序(order by),再进行统计(sum,count,average,etc.)
1.声明数据集合
Collection<T> records
2.根据条件进行分组--格子法:
例1:将学生成绩按班级分组,如有12个班级,建立12个格子,每个班的数据装入相应的班级格子
T[] arr=new T[12]
Map<String,T> map=new HashMap<String,T>(12)
例2:将全年销售额按周进行分组,一周一个格子,每周的数据放入相应的格子
a.需要多少个格子
int cnt=divideAndCeil(365,7)=53,建立53个格子
T[] arr=new T[cnt]
b.要放入哪个格子
long interval=7*DateUtil.lDay;
int index=divideAndFloor(curDate.getTime()-beginDate.getTime(),interval)
注:
divideAndCeil(a,b) => ceil(a/b)
divideAndFloor(a,b) => floor(a/b)
注:这些是比较简单的例子,实际情况可能比这复杂得多,分组也可能有好几级,这就需要实现一个专门的函数来得到相应的索引,以便进行正确的分组插入
3.排序
最简单的实现方法是Java的Compare接口,
4.统计
建立一个与分组个数相同格子数的集合,每个格子中放计数器,总和,平均值等统计值
Class Counter<T>{
T sum
T count;
T average;
...
}
1.声明数据集合
Collection<T> records
2.根据条件进行分组--格子法:
例1:将学生成绩按班级分组,如有12个班级,建立12个格子,每个班的数据装入相应的班级格子
T[] arr=new T[12]
Map<String,T> map=new HashMap<String,T>(12)
例2:将全年销售额按周进行分组,一周一个格子,每周的数据放入相应的格子
a.需要多少个格子
int cnt=divideAndCeil(365,7)=53,建立53个格子
T[] arr=new T[cnt]
b.要放入哪个格子
long interval=7*DateUtil.lDay;
int index=divideAndFloor(curDate.getTime()-beginDate.getTime(),interval)
注:
divideAndCeil(a,b) => ceil(a/b)
divideAndFloor(a,b) => floor(a/b)
注:这些是比较简单的例子,实际情况可能比这复杂得多,分组也可能有好几级,这就需要实现一个专门的函数来得到相应的索引,以便进行正确的分组插入
3.排序
最简单的实现方法是Java的Compare接口,
4.统计
建立一个与分组个数相同格子数的集合,每个格子中放计数器,总和,平均值等统计值
Class Counter<T>{
T sum
T count;
T average;
...
}
相关文章推荐
- SQL统计功能的Java实现
- Java实现的生成二维码统计扫描次数并转发到某个地址功能详解
- oracle的blob对象在客户端转化为java.sql.Blob,实现上传图片功能,同时将图片在客户端显示案例
- Java实现对于文件的多种操作,复制、删除、重命名、剪切文件、统计指定类型文件数等10个功能
- sql 实现java 中 split 功能
- java文件操作代码片断实例实现统计文件中字母出现的个数功能
- [SQJ]sql如何实现类似统计的功能
- 利用 Ant 的 SQL Task 来实现自己的 Java 执行 SQL 脚本文件的功能
- Java实现的词频统计——功能改进
- 使用Java注解实现拼接sql语句的功能
- 开发整理-sequoiaDB Java实现统计排名sql
- java 实现类似于oracle分组统计的功能
- 利用SQL*PLUS导出成EXCEL和html的功能实现报表统计:
- 一个SQL语句实现的统计功能
- Java代理Lotus完成邮件解析,业务处理,搜索等大部分功能实现(第二弹df )
- 【算法导论-34】红黑树、顺序统计树的Java实现
- Java实现图片裁剪预览功能
- Java实现 统计单词出现的次数并按照单词频率从高到低输出
- 常用统计分析 SQL 在 AWK 中的实现(转)
- Java基于二叉查找树实现排序功能示例