SELECT id
,currencyCode
,(CASE WHEN total<=3 THEN amount ELSE (3 - last_total)/conversion_rate END) AS target_amount
,(CASE WHEN total<=3 THEN target_amount ELSE 3 - last_total END) AS target_amount
FROM (
SELECT t.*
,t.amount*r.conversion_rate as target_amount
,SUM(t.amount*r.conversion_rate) OVER(ORDER BY t.amount*r.conversion_rate,id) as total
,SUM(t.amount*r.conversion_rate) OVER(ORDER BY t.amount*r.conversion_rate,id) - t.amount*r.conversion_rate as last_total
,r.conversion_rate
FROM t_money t, t_rates r
WHERE t.currencyCode = r.from_currency
AND r.to_currency = 'usd'
)
WHERE total<=3
OR total>3
AND last_total<3
ORDER BY total;
--------------
SELECT id,
currencyCode,
(CASE
WHEN total <= 3 THEN
amount
ELSE
(3 - last_total)/nvl((select nvl(conversion_rate, 1)
from t_rates
where from_currency = currencycode
and upper(to_currency) = 'USD'),
1)
END)amount,
(CASE
WHEN total <= 3 THEN
target_amount
ELSE
3 - last_total
END) AS target_amount
FROM (SELECT t.*,
t.amount * r.conversion_rate as target_amount,
SUM(t.amount * r.conversion_rate) OVER(ORDER BY t.amount * r.conversion_rate, id) as total,
SUM(t.amount * r.conversion_rate) OVER(ORDER BY t.amount * r.conversion_rate, id) - t.amount * r.conversion_rate as last_total
FROM t_money t, t_rates r
WHERE t.currencyCode = r.from_currency
AND r.to_currency = 'usd')
WHERE total <= 3
OR total > 3
AND last_total < 3
ORDER BY total;
分享到:
相关推荐
在IT行业的数据库领域,SQL查询优化是至关重要的技术点,特别是在大数据量处理和高并发场景下,优化SQL查询可以显著提升系统的性能和响应速度。本文将深入探讨SQL查询优化的关键知识点,包括常见的优化策略、查询...
在SQL(Structured Query ...了解并掌握这些SQL分组和求和的技巧,将有助于你在处理大数据集时编写出更高效、更优化的查询,提升数据库性能,从而更好地服务于业务需求。希望这个介绍能对你在SQL学习和实践中有所帮助。
### SQL高级优化技巧详解 #### 一、选择最有效率的表名顺序 在基于规则的优化器中,Oracle解析器会从右至左处理FROM子句中的表名。为了提高查询效率,需要确保FROM子句中记录条数最少的表作为基础表,即驱动表。...
此外,如果你的程序需要频繁进行此类计算,可以考虑优化数据库设计,例如添加预计算的合计字段,或者使用数据库的存储过程来进一步减少应用程序的负担。总的来说,熟练掌握SQL语句的使用,对于易语言或其他任何支持...
在SQL Server数据库管理系统中,SQL(Structured Query Language)是用于管理关系数据库的主要工具。它涵盖了数据查询、数据更新、数据插入以及数据删除等操作。本资料"SQLServer实用SQL语句大全"是一份全面的手册,...
本篇将深入探讨“易语言数据库字段求和”这一主题,帮助你理解和掌握如何在易语言中实现对数据库字段的求和功能。 首先,我们要理解数据库字段求和的基本概念。在数据库中,字段是指表中的一列,而求和则是指对某一...
在SQL Server 2008中,T-SQL得到了进一步的增强和优化,提供了更多的功能和性能提升。以下是一些关键的知识点: 1. **基础查询语法**:包括SELECT语句的基本结构,用于从一个或多个表中检索数据。学习如何使用WHERE...
### SQL实现两张无关联表的数据列合并在一张结果集中 #### 实现思路及技术要点解析 在实际工作中,我们经常会遇到需要将两张无关联表的数据列合并到一个结果集中的需求。这种操作可以帮助我们更好地组织数据,使得...
- **优化**:SQL提供了高效的执行计划。 - **声明式**:SQL允许用户以简洁的方式表达查询逻辑。 - **易于理解**:SQL语法直观,易于学习和使用。 - **稳定性**:SQL标准成熟,支持广泛。 - **一致性**:一个查询只...
`www.pudn.com.txt`和`good-ebook`可能是有关SQL的电子书或资料链接,这些资源可能包含更深入的SQL知识,如性能优化、事务处理、数据库设计原则以及高级特性,如窗口函数、游标、存储过程的编写等。 总的来说,SQL...
### Oracle SQL性能优化关键知识点 #### 一、选择正确的基础表 在进行多表连接查询时,选择正确的基础表对于提高查询效率至关重要。基础表的选择原则通常基于表的数据量大小和连接方式。文档中提到了两种不同的连接...
通过这个课程,读者将不仅学会SQL的基础语法,还能掌握处理复杂查询、优化数据库性能以及设计高效数据库结构的技能。实践是学习SQL的关键,这本书通过大量的例子和练习,鼓励读者动手操作,从而真正理解并掌握SQL这...
本文将汇总一些常用的SQL查询语句、数据库连接方式以及查询优化技巧,帮助你提升对数据库操作的理解和技能。 1. **SQL查询语句基本语法** SQL查询通常由SELECT关键字开始,用于从数据表中选取特定的列。例如: ``...
SQL优化包括查询优化、索引优化、存储优化和服务器配置优化。 综上所述,“SQL语言参考大全中文版”是学习和掌握SQL的宝贵资源,无论你是初学者还是经验丰富的开发者,都能从中受益匪浅。它将帮助你理解和应用SQL,...
13. **性能优化**:包括SQL优化器的选择、索引优化、统计信息的收集和更新、SQL调优顾问的使用、EXPLAIN PLAN的分析等。 14. **安全性**:Oracle提供角色权限、系统权限、对象权限等多种机制来控制用户对数据库的...
学习这些函数不仅可以提升SQL查询效率,还能帮助你更好地设计和优化数据库查询。在实际工作中,理解并熟练应用这些函数,能够解决复杂的数据查询问题,提高数据处理能力。此外,SQL Server 2008还支持用户自定义函数...
通过这些基础知识的学习,读者可以更好地进行数据库的设计、维护和优化工作。同时,高级查询运算词如UNION、EXCEPT和INTERSECT以及外连接等概念的掌握,能够帮助开发者编写更高效、更复杂的查询语句,从而满足复杂...
- 利用窗口函数进行复杂的计算逻辑,如累积求和、排名等。 - 处理层次结构数据的技术,如递归查询等。 #### 四、性能优化技巧 - **查询优化**: - 分析执行计划,识别潜在的性能瓶颈。 - 调整JOIN顺序以减少...
以上只是SQL语言的部分知识点,实际的“经典sql语句”文档可能包含更多特定场景下的高级用法和技巧,如窗口函数、联接优化、存储过程、触发器等。通过深入学习和实践,你可以掌握更高效的数据管理技能。