`
daqing15
  • 浏览: 41192 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

自己写的,模仿了SQL的group by分组

阅读更多

在一次的项目上,为了避免客户端进行数据库查询,而且客户端操作的这些数据量也不太多。所以就想直接在客户端用Java实现group by的形式;

public List groupByList(final List<XxxObject> List) {
		if(CollectionUtils.isEmpty(listformdetail)){
			return ;
		}
		List groupbyList = new ArrayList();
		Map<String, Integer> map = new HashMap<String, Integer>();
		
		for (XxxObject obj : List) {
			if (obj.getXxx() != null
					&& obj.getXxx().getXyy() != null) {
				Xyy xyy = obj.getXxx().getXyy();
				//org.apache.commons.lang.StringUtils
				// key值的构成:Xxx编码:Xxx名称,以这两个来进行分组,统计
				String key = StringUtils.trimToEmpty(xyy.getCode()) + ":"
						+ StringUtils.trimToEmpty(xyy.getName());
				if (map.containsKey(key)) {
					Integer val = obj.getAmount().intValue() + map.get(key).intValue();
					map.put(key, val);
				} else {
					map.put(key, obj.getAmount().intValue());
				}
			}
		}

		for (Map.Entry<String, Integer> entry : map.entrySet()) {
			String[] names = StringUtils.splitByWholeSeparator(entry.getKey(), ":");
			Xyy rc = new Xyy();
			XxxDTO dto = new XxxDTO();
			rc.setCode(names[0]);
			rc.setName(names[1]);
			dto.setXyy(rc);
			dto.setAmount(Double.valueOf(entry.getValue()));
			groupbyList.add(dto);
		}
		return groupbyList;
	}

 做一下标识,避免老了,记不住这些小技巧

1
0
分享到:
评论
1 楼 jianpx 2011-11-15  
我最近也是遇到要使用类似group by 功能的情景, 不过我操作的是文件, 所以我联想到用sort 命令。例如:
1,2,3
1,1,2
1,1,1
这样的例子, 如果要按照前两列来排序group by则可以通过 如下命令实现:
sort -t, -k1,2
如果还要group by之后做统计, 可以用uniq -c 就行了。

相关推荐

    仿sqlserver数据库分组汇总

    模仿sqlserver数据库中的groupby分组数据,可直接在页面传入数据集合生成结果,,结果由console.log()输入,需要浏览器F12开发模式观看

    精通Oracle.10g.Pl.SQL编程.pdf

    同时,熟悉SQL的查询语法,如JOIN、GROUP BY、HAVING等,因为它们是PL/SQL中的重要组成部分。 此外,优化PL/SQL代码也是关键,包括减少不必要的数据库访问,使用绑定变量以避免硬解析,以及合理利用索引以提高查询...

    cpp-fselect实现采用类似于SQL的语法来查找文件

    在SQL中,我们可以使用WHERE子句定义条件,JOIN操作合并不同表的数据,GROUP BY对数据进行分组,以及ORDER BY对结果排序。在`fselect`中,这些概念可能被转化为针对文件属性的操作,如文件名、大小、修改时间等。 ...

    oracle数据查询

    利用`GROUP BY`子句结合聚合函数进行分组统计,例如统计各部门的员工人数: ``` SELECT department, COUNT(*) FROM employees GROUP BY department; ``` 以上内容概述了Oracle数据库查询的基础知识,通过这些知识...

    pypika:PyPika是一个python SQL查询构建器,它使用反映结果查询的语法来公开SQL语言的全部功能。 PyPika擅长各种SQL查询,但对数据分析特别有用

    4. **聚合分析**: 支持 GROUP BY 和聚合函数,如 COUNT、SUM、AVG、MIN、MAX,便于进行统计分析。 5. **窗口函数**: PyPika 还支持窗口函数,这在时间序列分析、排名和滑动窗口计算中非常实用。 ### 使用 PyPika ...

    SQL_Fanzy:努力工作

    可以配合`WHERE`子句进行条件筛选,使用`GROUP BY`进行分组,`ORDER BY`进行排序,`JOIN`操作连接多个表等。 4. 更新与删除:`UPDATE`用于修改现有记录,`DELETE`则用于删除特定行或全部行。 5. 数据聚合:SQL提供...

    LeetCode-HackerRank-SQL

    1. **SQL基础**:首先,你需要了解SQL的基本语法,包括SELECT语句用于查询数据,FROM语句指定数据来源,WHERE子句过滤结果,GROUP BY和HAVING用于分组和过滤组,以及ORDER BY用于排序。此外,JOIN操作用于合并不同表...

    Hql详解[文].pdf

    - 使用`GROUP BY`子句进行数据分组,如`String hql = "SELECT user.status, COUNT(user.id) FROM User GROUP BY user.status";` - 结合`HAVING`子句过滤分组后的结果,如`...HAVING COUNT(user.id) &gt; 10;` 8. **...

    BLOG_Oracle_wm_concat包的订制.pdf

    2. **订制自己的WM_CONCAT函数**:开发人员可以自定义一个函数,模仿`WM_CONCAT`的行为。这通常涉及到使用`LISTAGG`分析函数或其他字符串聚合方法。`LISTAGG`是Oracle 11g引入的一个更稳定、更高效的选择,它允许将...

    sheetql:SQL式但在csvexcels上。 希望

    2. **数据查询**:能够通过编写类似SQL的语句来查询CSV和Excel文件,包括SELECT、WHERE、GROUP BY、ORDER BY等子句,支持条件过滤、聚合计算等。 3. **数据操作**:除了查询,可能还支持插入、更新和删除数据,类似...

    railsarelinjavascript

    .groupBy('users.id'); ``` **总结** "rails/arel in javascript"意味着在JavaScript中复现或模仿Rails的Arel库,目的是为前端或Node.js应用提供一个强大的、面向对象的SQL查询构建器。这涉及到理解SQL语法、构建...

    易语言高仿SQL管理器源码-易语言

    2. **数据库操作**:使用易语言编写SQL语句执行引擎,支持SELECT、INSERT、UPDATE、DELETE等基本操作,以及更复杂的JOIN、GROUP BY、HAVING等高级查询。 3. **数据表管理**:提供查看、创建、修改和删除数据表的...

    汇总,汇总是什么意思,matlab

    在编程或数据分析中,这可能涉及到使用特定的函数或工具,如SQL的GROUP BY语句或Python的pandas库中的groupby方法。在MATLAB中,"汇总"可能指的是使用统计函数对矩阵或数组进行操作,例如计算平均值、总和或标准差。...

    Mongo聚合助手类似于lodash实用程序

    MongoDB的聚合框架是用于处理数据集合的强大工具,它提供了类似SQL的聚合操作,如分组、过滤、投影和计算。在JavaScript开发中,lodash是一个非常受欢迎的实用库,提供了许多方便的数据处理方法。"Mongo聚合助手类似...

    易语言类似thinkphp连贯操作数据库Mysql模块-易语言

    2. 查询构造:支持创建SELECT查询,可以添加WHERE条件、ORDER BY排序、GROUP BY分组、HAVING过滤等。 3. 插入数据:提供INSERT INTO语句的构造,可以便捷地插入一行或多行数据。 4. 更新数据:支持UPDATE语句的构建...

    [搜索链接]PHP仿安逸吧排行程序_an8php.zip

    5. SQL查询:包括SELECT、INSERT、UPDATE和DELETE等操作,以及可能的JOIN、GROUP BY等复杂查询。 6. 错误处理和日志记录:确保程序在出现问题时能正确反馈,并记录相关日志便于调试。 7. 安全性:防止SQL注入、XSS...

    海康威视2016年技术支持笔试题

    - **解释**:在SQL查询语句中,`WHERE`子句用于指定查询条件,`GROUP BY`子句用于分组数据,`ORDER BY`子句用于排序结果。 **8. FTTX技术** - **知识点**:FTTX技术的分类及其覆盖范围。 - **解释**: - FTTN(光纤...

    林昊 HBase简介与实践分享 .pptx

    - **Server端计算支持**:增强HBase以支持服务器端聚合操作,如group by、avg和sum等。 - **资源隔离与优先级控制**:通过Group级别的资源隔离机制,为不同任务设定优先级。 #### 最佳实践 - **合理设计Row Key与...

Global site tag (gtag.js) - Google Analytics