oracle 的乘法,Oracle group by 相乘
概念:
使用對數可以達到你要的
下面是注意事項跟照你需求寫的範例
注意:
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 相乘相关推荐
- oracle分组聚合查询,Oracle中分组查询group by用法规则解析
本篇文章小编给大家分享一下Oracle中分组查询group by用法规则解析,文章介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看. Oracle中group by ...
- oracle的 listagg() WITHIN GROUP () 函数使用
oracle的 listagg() WITHIN GROUP () 函数使用 使用条件:数据统计行转列 – 查询部门为20的员工列表[显然是多列显示] SELECT t.DEPTNO,t.ENAME ...
- oracle 快速上手,Oracle学习笔记:快速上手
开启服务:先开启Lisenterner服务 再开启ORCL服务 oracle登录 用户: - 管理员 sysDBA - 无密码 - 系统用户 system - manager - 普通用户 scott ...
- oracle 峰度 函数,Oracle Database 21c 十大新特性一览
摘要:Oracle 考虑到 2020 年我们的客户将面临前所未有的经济和业务中断.我们决定不将 Database 20c Preview 版本升级为 General Availability. 相反, ...
- Oracle HA 之 oracle 11.2 rac库配置active dataguard
目录 configing active dataguard for 11.2 rac. 1 一.建组.建用户.配置环境变量.内核参数等... 1 二.配置共享磁盘... 3 1)创建4块共享磁盘并fd ...
- Oracle Study之--Oracle 11gR2通过RMAN克隆数据库
Oracle Study之--Oracle 11gR2通过RMAN克隆数据库 Purpose of Database Duplication A duplicate database is usefu ...
- oracle 10g dsg,【ORACLE】relink oracle 10g 数据库
通常要迁移一个数据库,我们会使用 1 冷备份,整个数据库迁移, 2 rman duplicate 功能进行复制到本机或者复制到异机, 前面两种都必须先在目标库上安装软件.这里测试另外一种方法:对于单实 ...
- oracle 12 ORA-01262,oracle物理dg安装:方法二
本文记录了物理dg的第二种安装方法,使用rman duplicate from active database,不需要做备份文件. 准备工作: 1.两台虚拟机,主机名:n1, n2,操作系统:cent ...
- oracle redo 200mb,Oracle的redo log在各场景下的恢复
Oracle的redo log非常重要,redo log损坏将导致数据库开法开启或数据丢失,针对redo log在各种场景下如何打开或恢复数据库,特别模拟测试说明: 各场景包括如下(共6个场景): 场 ...
最新文章
- python tornado教程_Tornado 简单入门教程(零)——准备工作
- 关于Object.create()与原型链的面试题?
- 算法杂货铺——k均值聚类(K-means)
- svm常用核函数及选择核函数的方法
- Django的CBV与FBV
- 玩转oracle 11g(48):oracle命令窗口执行sql语句
- javascript事件机制与jQuery.bind的补充说明
- ffmpeg实现各种视频特效
- CCNA配置试验之八 帧中继——点到点子接口(point-to-point)
- 管理,教育,励志系列合集600本电子书
- 【转】虚拟机文件格式详解 .VMX .VMSD .VMDK .NVRAM .VMX
- 张小龙-年薪近3亿的微信之父,他是如何做到的?
- 名帖119 文徵明 小楷《摩诃般若波罗蜜多心经》
- CocosCreator 微信小游戏、Android 和 iOS 使用 protobuf
- 2021-12-18 迈向程序猿的第四十七步
- java学习笔记(十)—— 抽象类、接口、内部类
- android基础知识13:AndroidManifest.xml文件解析【转载】
- 计算机如何取消自动关机,电脑怎么取消自动关机【处理形式】
- (石头、剪刀、布)shell脚本,随机对比,case的应用
- 单位转换html代码,JavaScript实现长度单位转换
热门文章
- mysql怎么写外键支持级联删除_MySQL外键级联删除不起作用,完全难倒
- 文件服务器属于固定资产吗,服务器内存属于固定资产吗
- @天涯 njsuixin “英语最好不要报班,花钱多还学不到东西。”——这个满适合我的!
- Shell脚本的美元符($)
- 【必知必会的MySQL知识】②使用MySQL
- java doc转换docx_JAVA - 将doc文档转为docx文档
- lol服务器崩溃补偿领取中心,LOL官方: 服务器崩溃补偿! 全服再次免费赠送皮肤一款!...
- C语言求最长公共子序列
- 快速生成 Mac App icns图标
- Java将图片转为Base64