-
SQL语句------统计报表涉及三张表 3
表a(汇率表) 主键 币种ID 日期 时间 当前汇率
id currid a_date a_time value
表b(币种表) 主键 币种缩写 中文名称
currid currEN currCN
表c(交易表) 主键 设备编号 兑入币种(英文缩写) 兑入金额 兑出人民币金额 日期 时间
pid code currencyIN amountIN amountOUT c_date c_time
要求虚拟表结构如下(result_Tbale):
根据日期,设备编号,币种分组
日期 设备编号 交易比数 交易币种 兑入金额总计 兑出金额总计 交易汇率
c_date code count currencyIN sumIN sumOUT rate
result_Tbale表中 交易汇率 需要根据日期和币种查询表a ,(取 <= c_date日期中的最新的汇率 )
嵌套的SQL语句只知道有限的关键字,绞尽脑汁也想不出这条SQL语句如何写,帮忙看下了,先谢谢了
问题补充:Anddy 写道结果表有条件吧
刚出去了下,不好意思!
结果表条件: 按时间区间
where c_date >= XXXXXX and c_date<=XXXXXX2010年5月15日 14:30
2个答案 按时间排序 按投票排序
-
写的有点多,觉得“授人以鱼,不如授人以渔”。呵呵,见谅了。
首先,对于这类的分组统计语句,第一点,要弄清楚的是:
用什么分组?
和我上次对你的回答一样。
确定以什么分组,决定了 你可以取出的字段,因为取出的字段必须可以使用SUM等聚合(统计)函数的。
参见你的上一个问题理解下。呵呵,可以看出你已经理解大部分
http://www.iteye.com/problems/42272
引用根据日期,设备编号,币种分组
这是你的分组依据。然后在你的要取出的字段,除了用于分组的字段,其他字段都得使用聚合(统计)函数
可以这样写出来:
SELECT 日期,设备编号,SUM(交易比数) AS 总交易比数,交易币种,SUM(兑入金额) AS 兑入金额总计,SUM(兑出金额) AS 兑出金额总计, AVG(交易汇率) AS 交易汇率
你有2个不清楚的地方:
1、重复使用了"交易比数",这里改为了“总交易比数”
2、对于交易汇率,虽然和时间是一对一的,但是时间不是分组依据,为了安全起见,加了个统计函数。
剩下的就是联表和条件约束了,根据要选择的字段写连接条件。
对照字段主要在“交易表”中,只有2个字段“兑入币种”、“交易汇率”不在其中,那就用连表
FROM 汇率表,币种表,交易表 WHERE 交易表.日期 = 汇率表.日期 AND 交易表.时间 = 汇率表.时间 AND 交易表.兑入币种 = 币种表.主键 AND 交易表.日期 BETWEEN XXXXXX AND XXXXXX
在这个里面,你的交易表中的 “兑入币种(英文缩写)” 没有描述约束,这里猜测为 是引用币种表的主键
分组依据:
GROUP 交易表.日期 , 交易表.设备编号 , 交易表.兑入币种
集合在一起就是:
SELECT 日期,设备编号,SUM(交易比数)AS 总交易比数, 交易币种,SUM(兑入金额) AS 兑入金额总计,SUM(兑出金额) AS 兑出金额总计, AVG(交易汇率) AS 交易汇率 FROM 汇率表,币种表,交易表 WHERE 交易表.日期 = 汇率表.日期 AND 交易表.时间 = 汇率表.时间 AND 交易表.兑入币种 = 币种表.主键 AND 交易表.日期 >= XXXXXX AND 交易表.日期<=XXXXXX GROUP 交易表.日期 , 交易表.设备编号 , 交易表.兑入币种
试试吧,分析了一大通,不知道可以行不。如果有问题,很可能 币种分组的问题
2010年5月15日 20:26
相关推荐
包含的字段为: v.id 任务编号, d.`name` 部门名称, CONCAT(v.assignedTo,'(',u.realname,')')登记人, v.pname 项目, v.tname 任务名称, v.estimate 预计工时, v.consumed 已完成工时, v.`left` 剩余工时, ...
为了统计核电建造过程中所有材料的使用量,可以使用以下SQL语句: ```sql SELECT area, docid, lrcm, mat_type, spec, grade, SUM(dimen_1 * dimen_2 * pre_qty / 1000000) yongliang FROM ( SELECT e.area, e....
rs.open SQL语句,conn,3,2 3. SQL常用命令使用方法: (1) 数据记录筛选: sql="select * from 数据表 where 字段名=字段值 order by 字段名 [desc]" sql="select * from 数据表 where 字段名 like \'%字段值%\'...
动态SQL是指在运行时构建并执行的SQL语句。它允许用户在不知道确切的SQL命令的情况下生成和执行SQL命令。这种方式对于处理未知数量或类型的列非常有用。例如,在本例中,动态SQL用于构建一个包含多个列(由`buildNo`...
在这种情况下,使用SQL查询语句可以灵活地根据多张表之间相关联的信息进行查询,从而生成满足特定需求的报表。通过构造适当的查询语句,可以将流通借还表、书目表、读者表等多个表的数据结合起来,生成所需的催还...
1. **JDBC驱动**:Java应用程序通过Java Database Connectivity (JDBC) API与SQL Server建立连接,执行SQL语句。 2. **预编译语句与批处理**:预编译语句能提高查询性能,批处理则可以一次性执行多个SQL命令,减少...
- 报表统计:生成工资报表,便于管理者查看整体薪资状况。 通过参与Java SSM工资管理系统的开发,开发者能够掌握企业级应用开发流程,理解并熟练运用Spring、Spring MVC和MyBatis框架,以及数据库设计和前端开发...
使用SQL语句(如SELECT、INSERT、UPDATE、DELETE)可以实现数据的增删改查操作。 该系统的关键模块可能包括: 1. **登录模块**:验证管理员身份,确保数据安全。 2. **学生信息管理模块**:添加、修改和删除学生...
在本系统中,SQL Server 2000创建了包含学生基本信息、成绩、课程等多张表的数据库结构,通过SQL语句实现数据的增删改查。C#.NET使用ADO.NET组件与SQL Server通信,实现数据的实时更新和查询。 学籍管理系统的功能...
目前,在Facebook内部,Hive仓库已包含了数千张表,总数据量超过700TB,并被超过100名用户广泛用于报表制作和即席分析等多种场景。 #### 二、Hive 数据模型与HiveQL **2.1 数据模型** 在Hive中,数据组织结构主要...
5. **报表与分析**:SQL Server自带的Reporting Services提供了一种强大的报表生成工具,可以基于这三张表创建各种报表,如统计每个学校的班级数量、每个班级的学生人数等,为企业决策提供数据支持。 总结来说,...
- **报表和统计**:可能需要生成固定资产的统计报表,如按类别统计资产数量、按年份统计购置成本等,这涉及到VB的报表控件和复杂的SQL聚合函数(如COUNT、SUM等)。 4. **系统安全与优化**: - **权限管理**:...
此外,SQL语句用于插入、更新、删除数据,以及查询操作。 3. **连接数据库**:VB通过ADO(ActiveX Data Objects)或ODBC(Open Database Connectivity)与SQL数据库建立连接,实现数据的读取、写入和更新。需要编写...
- **详解**: 在Access中,查询是基于表的数据视图,报表用于呈现数据,可以使用表向导和设计器创建表,也可以使用SQL语句创建和修改表结构。 - **应用场景**: 数据库设计与管理。 ### 21. C语言函数实现 - **知识点...
7. **存储过程**:存储过程(STORED PROCEDURE)是一组预编译的SQL语句,可以接受参数,返回结果,提高代码复用和执行效率。 8. **事务处理**:SQL支持事务(TRANSACTION),确保数据的一致性和完整性。BEGIN、...
系统可能使用如Microsoft SQL Server或SQLite等数据库管理系统,创建包含学生信息、宿舍信息、费用信息等多张表,并通过SQL语句进行数据操作。例如,可以通过INSERT语句添加新的入住记录,通过SELECT语句查询学生...
格式良好的SQL并不会比乱七八糟的SQL运行效果更好。数据库其实不怎么关心SQL语句中你把逗号放到了字段名的前面还是后面。...下面是一个典型的SQL应用场景,业务报表的数据来自三张表,客户表、销售表和地域表。
2. 存储过程:预编译的SQL语句集合,可重复使用,提高效率并简化复杂的操作。 六、索引与优化 1. 索引类型:B树索引、哈希索引和全文索引等,了解它们的作用和适用场景。 2. 查询优化:如何通过创建和使用索引来...
首先,我们来看一下涉及的三张表: 1. **Department** 表存储部门信息,包括部门ID(Id)和部门名称(Department)。 2. **Employee** 表记录员工信息,包含员工ID(EmployeeId)、所属部门ID(DepartmentId)和...
而SQL*PLUS是Oracle提供的一种前端工具,用于执行SQL语句,支持更多交互式功能。 - **PL/SQL语言**:一种过程化SQL扩展语言,结合了SQL的强大力量和高级程序设计语言的特性,允许在数据库内部编写复杂的业务逻辑。 ...