`

oracle sql实现 累乘

阅读更多
引用

方法一:
使用窗口函数SUM OVER,用对数相加来模拟乘法操作。

SQL> select empno,ename,sal
  2  from emp
  3  where deptno=10;

     EMPNO ENAME             SAL
---------- ---------- ----------
      7782 CLARK            2450
      7839 KING             5000
      7934 MILLER           1300

下面是实现方法

SQL> select empno,ename,sal,
  2  exp(sum(ln(sal)) over(order by sal,empno)) as running_prod
  3  from emp
  4  where deptno=10;

     EMPNO ENAME             SAL RUNNING_PROD
---------- ---------- ---------- ------------
      7934 MILLER           1300         1300
      7782 CLARK            2450      3185000
      7839 KING             5000   1.5925E+10

注意,在SQL中,对小于等于0的值取对数是无效的。如果表中包含这样的值,一定要避免把这些无效的值传递给SQL的LN函数。

引用

方法二:
ORACLE 10g引入了MODEL子句,在下面的例子中,每个SAL都是负数,这表明累乘积允许出现负值。

SQL> select empno,ename,sal,tmp as running_prod
  2  from
  3  (
  4  select empno,ename,-sal as sal
  5  from emp
  6  where deptno=10
  7  )
  8  model
  9  dimension by(row_number() over(order by sal desc) rn)
10  measures(sal,0 tmp,empno,ename)
11  rules
12  (
13  tmp[any]=case when sal[currentv()-1] is null then sal[currentv()]
14     else tmp[currentv()-1]*sal[currentv()]
15     end
16  );

     EMPNO ENAME             SAL RUNNING_PROD
---------- ---------- ---------- ------------
      7934 MILLER          -1300        -1300
      7782 CLARK           -2450      3185000
      7839 KING            -5000   -1.593E+10

引用

方法三:(不支持负数)
--测试数据
create   table   t(id   int,qty   int);
insert   into   t
select   1,2   from   dual   union   all  
select   2,4   from   dual   union   all
select   3,6   from   dual   union   all
select   4,5   from   dual;
--执行查询
Select   power(10,   Sum(Log(10,   qty)))   From   t
--查询结果
240
分享到:
评论

相关推荐

    oracle SQL查询工具

    oracle SQL查询工具oracle SQL查询工具oracle SQL查询工具oracle SQL查询工具oracle SQL查询工具oracle SQL查询工具oracle SQL查询工具oracle SQL查询工具oracle SQL查询工具oracle SQL查询工具oracle SQL查询工具...

    Oracle Sql语句转换成Mysql Sql语句

    OracleSqlConvert4MysqlSqlTool.java这个源码工具,根据描述,应该是实现了自动读取Oracle SQL语句,分析其结构,并根据MySQL的语法规则进行转换,然后将转换后的SQL语句保存到指定的目标文件中。这个工具简化了手动...

    Oracle SQL高级编程

    1. 存储过程和函数:编写使用PL/SQL编程语言的存储过程和函数,以实现复杂的逻辑和业务规则。 2. 高级查询技术:使用Oracle SQL的高级特性,如分析函数、子查询、连接以及数据聚合等。 3. 事务处理:深入理解如何...

    Oracle Sql基础(beginning oracle sql中文版)

    Oracle SQL是Oracle公司对SQL的实现,它增加了许多增强功能,如PL/SQL、游标、触发器、存储过程等。 二、Oracle数据库结构 Oracle数据库由多个物理文件组成,包括数据文件、控制文件、重做日志文件和参数文件。这些...

    Oracle SQL 官方文档

    Oracle SQL 是一种强大的数据库查询和编程语言,广泛用于管理和操作Oracle数据库系统。...在实践中,掌握PL/SQL的编程技巧,结合SQL的强大力量,可以实现更高效的数据管理、数据分析和应用程序开发。

    OracleSQLDeveloper

    Oracle SQL Developer 是一款由Oracle公司推出的免费数据库管理工具,它为数据库管理员(DBA)和开发人员提供了一个全面的集成环境,以便于管理和操作Oracle数据库。这个工具的强大之处在于其直观的用户界面和广泛的...

    精通 ORACLE SQL高级编程 学习笔记

    精通Oracle SQL【第2版】ORACLE SQL高级编程【第二版】学习笔记

    记使用Oracle SQL Developer 迁移MySql 数据至 Oracle.docx

    在IT领域,数据库迁移是一项常见的任务,特别是在不同的数据库系统之间,如从MySQL迁移到Oracle。本文将详细讲解如何使用Oracle...通过遵循这些指南,可以有效地将MySQL数据库转换为Oracle数据库,实现数据的无缝转移。

    精通OracleSQL第2版.zip

    《精通Oracle SQL(第2版)》是一本深入解析Oracle数据库查询语言的专业书籍,由Oracle ACE和OakTable团队的专家共同撰写,集成了他们的丰富经验和专业知识。这本书旨在帮助读者掌握Oracle SQL的高级技巧,提升在...

    Oracle SQL Developer 使用说明

    Oracle SQL Developer 是一款由Oracle公司推出的强大的数据库管理工具,它为数据库管理员(DBA)、开发者以及数据分析师提供了全面的功能,以高效地管理和操作Oracle数据库。本文档将深入讲解Oracle SQL Developer的...

    ORACLE_SQLDeveloper使用教程

    ### Oracle SQL Developer 使用教程 #### 一、Oracle Database Home Page 的使用 在开始介绍 Oracle SQL Developer 的使用之前,我们先来看看如何使用 Oracle Database Home Page。这部分内容非常重要,因为它是...

    Oracle SQL:经典练习题(附答案)

    Oracle SQL是数据库管理和数据分析的重要工具,尤其在处理Oracle数据库时不可或缺。本文提供的经典练习题旨在帮助初学者熟悉SQL语句的编写,特别是针对Oracle数据库特有的功能。以下将详细讲解涉及的知识点。 1. **...

    Oracle四大宝典之一:Oracle Sql基础 中文版

    第三章 ORACLE SQL 单行函数 第四章 从多表中查询数据 第五章 用组函数合计数据 第六章 子查询 第七章 操纵数据 第八章 创建和管理表 第九章 内置约束 第十章 创建视图 第十一章 其他数据库对象 第十二章 控制用户...

    Oracle SQL 内置函数大全

    Oracle SQL 内置函数大全 SQL中的单记录函数 给出整数,返回对应的字符 连接两个字符串 增加或减去月份 用于对查询到的结果进行排序输出

    精通Oracle_SQL(第2版)含源码

    《精通Oracle SQL(第2版)》是一本深入解析Oracle数据库管理系统中SQL语言的专业书籍,旨在帮助读者全面理解和掌握在Oracle环境下高效、精准地运用SQL进行数据查询、操作和管理的技能。书中不仅包含了基础的SQL语法...

    Oracle SQLDeveloper Migration Workbench(MySQL to Oracle)

    ### Oracle SQL Developer Migration Workbench (MySQL to Oracle) #### 概述 随着企业信息化建设的不断深入,数据库迁移已经成为一种常见的需求。特别是在不同数据库系统之间的数据迁移过程中,如何保证数据的...

    Oracle sql 高级编程(包含书中sql 附件)

    《Oracle SQL高级编程/数据库系列》的作者莫顿以精炼、风趣的语言揭开了Oracle SQL高级编程的神秘面纱。所涵盖的内容涉及SQL核心、SQL执行、分析函数、联结、测试与质量保证等,并提供大量实用性建议,且总结出...

    Linux下定时自动执行Oracle_SQL

    在IT领域,尤其是在数据库管理和系统自动化操作中,利用Linux下的Crontab实现Oracle SQL的定时自动执行是一项极为实用且高效的技术。本文将深入探讨如何在Linux环境下设置Crontab来定期执行Oracle SQL脚本,这一过程...

Global site tag (gtag.js) - Google Analytics