在开发中遇到了列变行的问题,简单记录如下:
tb_case 记录了 用例ID 用例名称。tb_ret 记录了执行结果,执行时间结果状态。
要求查询一段时间内的记录获取如下数据报表:
1点 2点 3点 4点 5点 ............. 24点
用例1 1 2 1 4 3 4
用例5 1 3 1 4 3 4
用例4 1 2 1 4 3 4
用groovy代码可以很容易实现,不超过50行,样例如下:
import groovy.sql.Sql
def sql = Sql.newInstance('JDBCURL', '用户名', '密码', '驱动')
def String s_in = '1, 2, 3, 51, 9999'
def String st_case = """SELECT c_id, c_name FROM tb_case WHERE c_id IN ($s_in)"""
def String st_query = """
SELECT c_id, to_char(r_start, 'yyyymmddhh24') rtime, SUM(r_stat) stat
FROM tb_ret
WHERE c_id IN ($s_in)
AND r_start BETWEEN to_date('20100710', 'yyyymmdd') AND to_date('20100720', 'yyyymmdd')
GROUP BY c_id, to_char(r_start, 'yyyymmddhh24')
"""
def cases = [:]
sql.eachRow(st_case){ ret ->
cases[(Integer) ret[0]]=ret[1]
}
def rets = [:]
def times = [:]
sql.eachRow(st_query){
def (c_id, rtime, stat) = [(Integer) it[0], it[1], it[2] ]
if (!times.containsKey(rtime)){ times[rtime] = -1 }
if (!rets.containsKey(c_id)){ rets[c_id] = [:] }
rets[c_id][rtime] = stat
}
print "名称".padRight(16)
times.sort().each{ k, v-> print "$k\t" }
println ""
//补充缺少的用例
cases.each{ k, v ->
if (!rets.containsKey(k)) rets[k]=[:]
}
rets.sort().each{ k, v ->
//补充缺少的时间点
def fulltime = times.plus(v)
print k
print cases[k].padRight(16)
fulltime.sort().each{ k1, v1 ->
print "\t$v1"
}
println ""
}
分享到:
相关推荐
Groovy框架在数据收集中的应用主要涉及到数据的获取、处理和存储,这通常是一个复杂而关键的任务。Groovy,作为一种动态、简洁的编程语言,它能够无缝集成Java平台,因此在构建数据采集系统时,Groovy可以提供高效且...
标题中的“groovy编写webservice服务端和客户端(含连接数据并输出JSON数据)”表明了本文将探讨如何使用Groovy编程语言来构建Web服务的服务器端和客户端,并且这些服务会涉及与数据库的交互以及JSON数据的处理。...
Groovy是一种基于Java平台的动态编程语言,它与Java语法高度兼容,但提供了更简洁、更易读的语法。在IT行业中,Groovy常被用于快速开发、脚本编写以及自动化任务,尤其在处理数据库操作时,其简洁的语法使得数据库的...
3. 数据处理:Groovy可以方便地处理XML、JSON等数据格式,常用于数据转换和解析。 4. 测试:Spock测试框架使用Groovy编写,提供了富有表达力的测试语句,简化了测试代码的编写。 5. 容器管理:在Apache Kafka、...
在Groovy中,数据搜索功能和正则表达式是两个非常重要的工具,尤其在处理文本和数据解析时。在这篇关于“Groovy入门”的第四讲中,我们将深入探讨这两个主题。 ### 1. 数据搜索功能 在Groovy中,数据搜索通常涉及...
apache-groovy-3.0.8.zip apache官网的groovy3.0.8版本,希望大家多多下载,apache-groovy-3.0.8.zip apache官网的groovy3.0.8版本,希望大家多多下载,apache-groovy-3.0.8.zip apache官网的groovy3.0.8版本,希望...
- **社区与支持**:列出了各种支持渠道,如邮件列表、用户组等。 - **贡献指南**:为希望为Groovy项目做出贡献的开发者提供了指导。 - **相关项目**:介绍了与Groovy相关的其他开源项目。 - **示例与教程**:提供了...
MongoDB不仅支持存储文档数据,还允许存储JavaScript代码,这对于我们的需求非常适用。我们可以编写一个Java方法,从MongoDB中查询到Groovy脚本,然后利用上述的Groovy调用机制执行这些脚本。 例如,我们可能会有一...
Groovy支持多种集合数据类型,如列表(List)、映射(Map)等,这些数据类型的使用方式与Java相似,但Groovy提供了更多的语法糖,使得代码更加简洁易读。 #### 六、元编程 Groovy强大的元编程特性使得开发者能够...
此外,Groovy还可以用于构建脚本、Web开发(如Grails框架)、自动化测试(Spock框架)、数据处理和集成等多种用途。 Groovy与Java的互操作性是其一大亮点。由于Groovy编译成字节码运行在JVM上,因此可以调用所有的...
7. **Groovy JSON Support**: 内置的JSON处理能力,使得Groovy可以方便地解析和生成JSON格式的数据。 8. **Groovy HTML and XML Processing**: 提供了简洁的API来处理HTML和XML文档,如GPath和XmlSlurper。 9. **...
Groovy的数据类型是完全以对象为中心的。在Groovy中,所有的类型都被视为对象,这包括基本数据类型。自动装箱和拆箱机制让基本数据类型与它们对应的包装类型之间的转换变得透明,从而让代码更简洁易读。Groovy还提供...
groovy
由于Groovy的灵活性,它也常被用于编写复杂的测试数据生成器或者测试辅助工具。 Groovy脚本执行工具提供的控制台环境(groovyConsole.bat)是一个交互式的开发工具,它允许开发者直接在控制台中编写和运行Groovy...
在这里,读者将学习到Groovy如何处理列表、集合、映射等集合型数据类型,这些数据类型的强大功能极大地简化了数据操作的复杂度。 #### 工作于闭包 闭包是Groovy的一个重要特性,它允许开发者定义可携带状态的匿名...
Groovy是一种动态、灵活的编程语言,它是Java平台上的一个扩展,可以无缝集成到Java项目中。Groovy的语法简洁,支持面向对象编程、函数式编程,并提供了许多现代语言特性,如闭包和动态类型。这使得Groovy成为快速...
2. **闭包(Closures)**:闭包是Groovy的一个强大特性,它是一种匿名函数,可以捕获其所在上下文的变量,常用于函数式编程和数据处理。 3. **领域规范语言(DSLs)**:Groovy可以方便地构建DSL,使得特定领域的...
### Groovy Script 入门知识点详解 #### 一、Groovy脚本简介 Groovy是一种灵活的面向对象的编程语言,它运行在Java平台上。由于其语法简洁且与Java高度兼容,因此对于Java开发者来说非常容易上手。Groovy不仅支持...
- 与大数据技术结合,如Apache Kafka、Hadoop等,可以编写处理数据的脚本。 总的来说,Groovy-All-2.4.8.jar 提供了一个完整的Groovy运行环境,便于在Java项目中利用Groovy的灵活性和生产力优势。无论是进行快速...