概念:

使用對數可以達到你要的

下面是注意事項跟照你需求寫的範例

注意:

exp(SUM(ln(C))) 會有浮點數問題,所以要使用floor來取整數

範例:

with temp_table as (

select 'A' A , 'A' B , 2 C from dual

union all select 'B' A , 'B' B , 2 C from dual

union all select 'B' A , 'B' B , 2 C from dual

union all select 'B' A , 'B' B , 4 C from dual

union all select 'A' A , 'A' B , 58 C from dual

)

select A,B,SUM(C) 相加,floor(exp(SUM(ln(C)))) 相乘結果,count(1) 每組數量 from temp_table

group by A,B

;

問題:

會出現這一錯誤訊息。

ORA-01428:argument '0' is out of range

原因:

因為數字裡面有0 或是 負數

解決方式:

A方法:假如不同意 0 * 1 * 2 = 0 的情況

可以加入where條件

where c > 0

剔除0跟負數問題

例子:

with temp_table as (

select 'A' A , 'A' B , 2 C from dual

union all select 'B' A , 'B' B , 2 C from dual

union all select 'B' A , 'B' B , 2 C from dual

union all select 'B' A , 'B' B , 0 C from dual

union all select 'A' A , 'A' B , 58 C from dual

)

select A,B,SUM(C) 相加,floor(exp(SUM(ln(C)))) 相乘結果,count(1) 每組數量 from temp_table

where c > 0

group by A,B

B方法:假如同意 0 * 1 * 2 = 0 的情況,我在想想怎麼寫

想出來了,負數跟0的問題都可以解決:

範例:

with temp_table as (

select 'A' A , 'A' B , 2 C from dual

union all select 'B' A , 'B' B , 2 C from dual

union all select 'B' A , 'B' B , 2 C from dual

union all select 'B' A , 'B' B , 0 C from dual

union all select 'C' A , 'C' B , -200 C from dual

union all select 'C' A , 'C' B , 4 C from dual

union all select 'A' A , 'A' B , 58 C from dual

)

, 有0的資料 as (

select * from temp_table

where C = 0

)

select A,B,ROUND(exp(sum(ln(abs(C))))*power(-1,sum(decode(sign(C),-1,1,0)))) from temp_table T100

where T100.A||T100.B not in (select A||B from 有0的資料 )

group by A,B

union all

select A,B,0

from 有0的資料

oracle 的乘法,Oracle group by 相乘相关推荐

  1. oracle分组聚合查询,Oracle中分组查询group by用法规则解析

    本篇文章小编给大家分享一下Oracle中分组查询group by用法规则解析,文章介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看. Oracle中group by ...

  2. oracle的 listagg() WITHIN GROUP () 函数使用

    oracle的 listagg() WITHIN GROUP () 函数使用 使用条件:数据统计行转列 – 查询部门为20的员工列表[显然是多列显示] SELECT t.DEPTNO,t.ENAME ...

  3. oracle 快速上手,Oracle学习笔记:快速上手

    开启服务:先开启Lisenterner服务 再开启ORCL服务 oracle登录 用户: - 管理员 sysDBA - 无密码 - 系统用户 system - manager - 普通用户 scott ...

  4. oracle 峰度 函数,Oracle Database 21c 十大新特性一览

    摘要:Oracle 考虑到 2020 年我们的客户将面临前所未有的经济和业务中断.我们决定不将 Database 20c Preview 版本升级为 General Availability. 相反, ...

  5. Oracle HA 之 oracle 11.2 rac库配置active dataguard

    目录 configing active dataguard for 11.2 rac. 1 一.建组.建用户.配置环境变量.内核参数等... 1 二.配置共享磁盘... 3 1)创建4块共享磁盘并fd ...

  6. Oracle Study之--Oracle 11gR2通过RMAN克隆数据库

    Oracle Study之--Oracle 11gR2通过RMAN克隆数据库 Purpose of Database Duplication A duplicate database is usefu ...

  7. oracle 10g dsg,【ORACLE】relink oracle 10g 数据库

    通常要迁移一个数据库,我们会使用 1 冷备份,整个数据库迁移, 2 rman duplicate 功能进行复制到本机或者复制到异机, 前面两种都必须先在目标库上安装软件.这里测试另外一种方法:对于单实 ...

  8. oracle 12 ORA-01262,oracle物理dg安装:方法二

    本文记录了物理dg的第二种安装方法,使用rman duplicate from active database,不需要做备份文件. 准备工作: 1.两台虚拟机,主机名:n1, n2,操作系统:cent ...

  9. oracle redo 200mb,Oracle的redo log在各场景下的恢复

    Oracle的redo log非常重要,redo log损坏将导致数据库开法开启或数据丢失,针对redo log在各种场景下如何打开或恢复数据库,特别模拟测试说明: 各场景包括如下(共6个场景): 场 ...

最新文章

  1. python tornado教程_Tornado 简单入门教程(零)——准备工作
  2. 关于Object.create()与原型链的面试题?
  3. 算法杂货铺——k均值聚类(K-means)
  4. svm常用核函数及选择核函数的方法
  5. Django的CBV与FBV
  6. 玩转oracle 11g(48):oracle命令窗口执行sql语句
  7. javascript事件机制与jQuery.bind的补充说明
  8. ffmpeg实现各种视频特效
  9. CCNA配置试验之八 帧中继——点到点子接口(point-to-point)
  10. 管理,教育,励志系列合集600本电子书
  11. 【转】虚拟机文件格式详解 .VMX .VMSD .VMDK .NVRAM .VMX
  12. 张小龙-年薪近3亿的微信之父,他是如何做到的?
  13. 名帖119 文徵明 小楷《摩诃般若波罗蜜多心经》
  14. CocosCreator 微信小游戏、Android 和 iOS 使用 protobuf
  15. 2021-12-18 迈向程序猿的第四十七步
  16. java学习笔记(十)—— 抽象类、接口、内部类
  17. android基础知识13:AndroidManifest.xml文件解析【转载】
  18. 计算机如何取消自动关机,电脑怎么取消自动关机【处理形式】
  19. (石头、剪刀、布)shell脚本,随机对比,case的应用
  20. 单位转换html代码,JavaScript实现长度单位转换

热门文章

  1. mysql怎么写外键支持级联删除_MySQL外键级联删除不起作用,完全难倒
  2. 文件服务器属于固定资产吗,服务器内存属于固定资产吗
  3. @天涯 njsuixin “英语最好不要报班,花钱多还学不到东西。”——这个满适合我的!
  4. Shell脚本的美元符($)
  5. 【必知必会的MySQL知识】②使用MySQL
  6. java doc转换docx_JAVA - 将doc文档转为docx文档
  7. lol服务器崩溃补偿领取中心,LOL官方: 服务器崩溃补偿! 全服再次免费赠送皮肤一款!...
  8. C语言求最长公共子序列
  9. 快速生成 Mac App icns图标
  10. Java将图片转为Base64