`
郭清明
  • 浏览: 17631 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

求和SQL优化

SQL 
阅读更多
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;
分享到:
评论

相关推荐

    sql面试题(sql查询优化)

    在IT行业的数据库领域,SQL查询优化是至关重要的技术点,特别是在大数据量处理和高并发场景下,优化SQL查询可以显著提升系统的性能和响应速度。本文将深入探讨SQL查询优化的关键知识点,包括常见的优化策略、查询...

    sql中分组和求和重点介绍

    在SQL(Structured Query ...了解并掌握这些SQL分组和求和的技巧,将有助于你在处理大数据集时编写出更高效、更优化的查询,提升数据库性能,从而更好地服务于业务需求。希望这个介绍能对你在SQL学习和实践中有所帮助。

    sql高级优化

    ### SQL高级优化技巧详解 #### 一、选择最有效率的表名顺序 在基于规则的优化器中,Oracle解析器会从右至左处理FROM子句中的表名。为了提高查询效率,需要确保FROM子句中记录条数最少的表作为基础表,即驱动表。...

    易语言利用SQL语句实现超级列表框 带合计行

    此外,如果你的程序需要频繁进行此类计算,可以考虑优化数据库设计,例如添加预计算的合计字段,或者使用数据库的存储过程来进一步减少应用程序的负担。总的来说,熟练掌握SQL语句的使用,对于易语言或其他任何支持...

    SQLServer实用SQL语句大全

    在SQL Server数据库管理系统中,SQL(Structured Query Language)是用于管理关系数据库的主要工具。它涵盖了数据查询、数据更新、数据插入以及数据删除等操作。本资料"SQLServer实用SQL语句大全"是一份全面的手册,...

    易语言数据库字段求和

    本篇将深入探讨“易语言数据库字段求和”这一主题,帮助你理解和掌握如何在易语言中实现对数据库字段的求和功能。 首先,我们要理解数据库字段求和的基本概念。在数据库中,字段是指表中的一列,而求和则是指对某一...

    Microsoft SQL Server 2008技术内幕:T-SQL查询.pdf

    在SQL Server 2008中,T-SQL得到了进一步的增强和优化,提供了更多的功能和性能提升。以下是一些关键的知识点: 1. **基础查询语法**:包括SELECT语句的基本结构,用于从一个或多个表中检索数据。学习如何使用WHERE...

    SQL实现两张无关联表的数据列合并在一张结果集中

    ### SQL实现两张无关联表的数据列合并在一张结果集中 #### 实现思路及技术要点解析 在实际工作中,我们经常会遇到需要将两张无关联表的数据列合并到一个结果集中的需求。这种操作可以帮助我们更好地组织数据,使得...

    大数据实时计算Flink SQL解密

    - **优化**:SQL提供了高效的执行计划。 - **声明式**:SQL允许用户以简洁的方式表达查询逻辑。 - **易于理解**:SQL语法直观,易于学习和使用。 - **稳定性**:SQL标准成熟,支持广泛。 - **一致性**:一个查询只...

    sql大全 sql大全

    `www.pudn.com.txt`和`good-ebook`可能是有关SQL的电子书或资料链接,这些资源可能包含更深入的SQL知识,如性能优化、事务处理、数据库设计原则以及高级特性,如窗口函数、游标、存储过程的编写等。 总的来说,SQL...

    Oracle-SQL优化(内部资料).docx

    ### Oracle SQL性能优化关键知识点 #### 一、选择正确的基础表 在进行多表连接查询时,选择正确的基础表对于提高查询效率至关重要。基础表的选择原则通常基于表的数据量大小和连接方式。文档中提到了两种不同的连接...

    learn-sql-the-hard-way-笨方法学sql

    通过这个课程,读者将不仅学会SQL的基础语法,还能掌握处理复杂查询、优化数据库性能以及设计高效数据库结构的技能。实践是学习SQL的关键,这本书通过大量的例子和练习,鼓励读者动手操作,从而真正理解并掌握SQL这...

    常用SQL查询经典汇总,查询优化总结

    本文将汇总一些常用的SQL查询语句、数据库连接方式以及查询优化技巧,帮助你提升对数据库操作的理解和技能。 1. **SQL查询语句基本语法** SQL查询通常由SELECT关键字开始,用于从数据表中选取特定的列。例如: ``...

    sql语言参考大全中文版

    SQL优化包括查询优化、索引优化、存储优化和服务器配置优化。 综上所述,“SQL语言参考大全中文版”是学习和掌握SQL的宝贵资源,无论你是初学者还是经验丰富的开发者,都能从中受益匪浅。它将帮助你理解和应用SQL,...

    Oracel SQL高级编程笔记

    13. **性能优化**:包括SQL优化器的选择、索引优化、统计信息的收集和更新、SQL调优顾问的使用、EXPLAIN PLAN的分析等。 14. **安全性**:Oracle提供角色权限、系统权限、对象权限等多种机制来控制用户对数据库的...

    SQL2008函数超详细版本

    学习这些函数不仅可以提升SQL查询效率,还能帮助你更好地设计和优化数据库查询。在实际工作中,理解并熟练应用这些函数,能够解决复杂的数据查询问题,提高数据处理能力。此外,SQL Server 2008还支持用户自定义函数...

    sql語句大全

    通过这些基础知识的学习,读者可以更好地进行数据库的设计、维护和优化工作。同时,高级查询运算词如UNION、EXCEPT和INTERSECT以及外连接等概念的掌握,能够帮助开发者编写更高效、更复杂的查询语句,从而满足复杂...

    Effective SQL-原版PDF

    - 利用窗口函数进行复杂的计算逻辑,如累积求和、排名等。 - 处理层次结构数据的技术,如递归查询等。 #### 四、性能优化技巧 - **查询优化**: - 分析执行计划,识别潜在的性能瓶颈。 - 调整JOIN顺序以减少...

    经典sql语句,sql语句集

    以上只是SQL语言的部分知识点,实际的“经典sql语句”文档可能包含更多特定场景下的高级用法和技巧,如窗口函数、联接优化、存储过程、触发器等。通过深入学习和实践,你可以掌握更高效的数据管理技能。

Global site tag (gtag.js) - Google Analytics