Oracle统计多张表的Count数的和

2023-11-20

需求描述:

Table1: job1

job1_id

name

status

other_column

1

file1

process

2

file2

failed

3

file3

success

Table2: job2

job2_id

name

status

other_column

1

fileA

new

2

fileB

success

3

fileC

failed

4

fileD

new

...

统计这两张表总共的成功(success)数,失败(failed)数,正在解析(process,包含new)数,结果返回一张表,像这样:

status

amount

process

3

success

2

failed

2

Oracle SQL写法:

Step1:

分别统计两张表各自的process, success, failed的count,只需要group by一下再count即可:

select status, count(*) amount from job1 group by status;

select status, count(*) amount from job2 group by status;

结果:

status

amount

process

1

success

1

failed

1

(上图表job1,下图表job2)

status

amount

new

2

success

1

failed

1

Step2:

将两张表融合起来,group by一下再对每个分组分别sum一下就可以计算出各自status的总数,但会遇到一个问题,new怎么add到process中?

> 用oracle的decode函数,即在查上面的count的时候,就把new的value给改成process(当然只是视图的改变,不会改变表原来的值)。这里只需要对表job2稍作修改:

select decode(status, 'new', 'process',

                    'success', 'success',

                    'failed', 'failed') status,

count(*) amount from job2 group by status;

> decode的用法:decode(字段名,原来的值,改变后的值,原来的值,改变后的值……),请注意,不需要改变的也要写上去,如上面的'success', 'success',否则都会变成空。

正确结果:

status

amount

process

2

success

1

failed

1

如果只写了decode(status, 'new', 'process') status,就会变成:

status

amount

process

2

 

1

 

1

Step3:

至此,可以融合了。用union all关键字将上面分别count后的表融合成一张表,再group by和sum。

> 这里不要用union,如果缺省all,则合并结果会去掉相同的项,因为我们两张表分别有success 1和success 1,重复了,若被去掉其中一项,就没有效果了,所以应该使用union all,而且注意union左右两边的表不要加括号,否则会报语法错误。另外这里用到with关键字将上面count后的表作为临时表方便总表调用。全部代码如下:

with table_sum as(

    select status, count(*) amount from job1 group by status

    union all

    select decode(status, 'new', 'process', 'success', 'success', 'failed', 'failed') status,
        count(*) amount from job2 group by status

) select status, sum(amount) amount from table_sum group by status;

结果:

status

amount

process

3

success

2

failed

2

Over :).

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Oracle统计多张表的Count数的和 的相关文章

  • Oracle SQL Regexp_replace 匹配

    这是我需要完成的一个时髦的匹配 A5 1 9 11 2 需要成为 A05 01 09 11 02 DOT 部分的数量从没有到很多不等 字母 A 将始终存在并且始终为 1 个字符 我想使用 regexp replace 函数 以便将其用作排序
  • iPhone:通过互联网连接到数据库?

    我一直在和某人谈论 iPhone 开发合同工作的可能性 目前我真正知道的是 有一家公司想要制作一款 iPhone 应用程序 该应用程序将访问其内部数据库 我不确定数据库类型是什么 Oracle MySQL 等 我想知道数据库类型是 Orac
  • 更改 Oracle 11g 或 12c 中的表/列/索引名称大小

    我使用oracle 11g并且需要名称大小大于30个字符 我知道11g中的最大大小是30个字符 我可以更改这个最大尺寸吗 Oracle 12c 中表 列 索引名称的最大大小是多少 数据库对象名称位于11g https docs oracle
  • Oracle:SQL 选择带时间戳的日期

    我有以下数据 SQL gt select from booking session BK ID BK DATE 1 18 MAR 12 10 00 00 000000 2 18 MAR 12 10 25 00 000000 3 18 MAR
  • Oracle 日期索引很慢。没有它查询速度快 300 倍

    我有一个 Oracle 查询 如下所示 运行时间为 10 分钟或更长时间 select r range text as duration range nvl count c call duration 0 as calls nvl SUM
  • PL/SQL 中的 BEGIN - END 块原子事务

    这些信息应该很容易找到 但我没有任何运气 当我有一个BEGIN ENDPL SQL 中的块 它是否表现为原子事务 它将尝试在命中时提交END阻止 如果出现问题会回滚更改吗 如果不是 我如何确保 BEGIN END 块内的代码的行为类似于原子
  • 无法使用 LISTAGG

    SELECT deptno LISTAGG ename WITHIN GROUP ORDER BY ename AS employees FROM emp GROUP BY deptno Error ORA 00923 FROM keywo
  • PHP OCI8 扩展不适用于 PHP 7 64 位

    我已经安装了 APACHE 2 4 x64 和 PHP7 x64 并下载了 PHP OCI 64 位库 但问题是每当我从 cli 运行 PHP 脚本时 它都会说 PHP启动 无法加载动态库 E 软件 服务器 php 7 0 11 Win32
  • 使用动态 SQL 检索表结构

    我正在迁移数据库 并尝试将表结构信息检索到单个行项目中以进行机器处理 由于技术原因 现有的迁移工具无法使用 必须采用这种方式处理 我已在多个表上成功运行以下查询 SELECT LISTAGG column name data type da
  • ORA-00972 标识符别名列名太长

    我有一个查询 例如 SELECT column as averyveryveryverylongalias more than 30 characters FROM Table name 它返回错误ORA 00972 标识符太长 有什么技巧
  • 如何将 SELECT...INTO 与 JOIN 一起使用?

    我有以下示例代码 DECLARE myRow table rowtype myVar table2 column type BEGIN SELECT table col1 table col3 table col4 table2 colum
  • SELECT DISTINCT 和 SELECT UNIQUE 之间的区别[重复]

    这个问题在这里已经有答案了 可能的重复 Oracle 9i 中的唯一与不同多列 https stackoverflow com questions 174912 unique vs distinct multi column in orac
  • Python 单行代码

    我想要用 Python 编写以下代码的单行解决方案 但是如何实现呢 total 0 for ob in self oblist total sum v amount for v in ob anoutherob 它返回总价值 我想要它是单行
  • Java - oracle.jdbc.dcn.DatabaseChangeEvent - 获取更改的行

    我正在使用 oracle jdbc dcn DatabaseChangeEvent 来从 Oracle DB 获取事件通知 public class TListener implements DatabaseChangeListener p
  • 从 CLOB 内的 XML 到带有路径列表的 Oracle 表

    我使用的Oracle版本是 BANNER Oracle Database 10g Enterprise Edition Release 10 2 0 4 0 64bi PL SQL Release 10 2 0 4 0 Production
  • 适用于 .NET 的最快 PNG 解码器

    我们的网络服务器需要先处理许多大图像的组合 然后再将结果发送到网络客户端 此过程对性能至关重要 因为服务器每小时可以接收数千个请求 现在 我们的解决方案从 HD 加载 PNG 文件 每个大约 1MB 并将它们发送到显卡 以便在 GPU 上完
  • 如何在 PL/SQL 中将列添加到现有表之前检查列是否存在?

    在向 Oracle 数据库的表中添加列之前 如何添加简单的检查 我已经包含了用于添加列的 SQL ALTER TABLE db tablename ADD columnname NVARCHAR2 30 可以使用以下视图之一访问有关 Ora
  • 从集合类型 Oracle 12c 插入表 - ORA-00902: 无效数据类型

    我正在使用 Oracle 12 1 我以为我可以查询 12c 中的表类型 当我尝试执行此包时 我收到错误 ORA 00902 无效数据类型 我什至尝试使用强制转换多重集 但仍然出现同样的错误 我知道我们可以在数据库级别创建对象然后查询 但我
  • 超时后如何重新建立 JDBC 连接?

    我有一个长时间运行的方法 它通过 EntityManager TopLink Essentials 执行大量本机 SQL 查询 每个查询只需要几毫秒即可运行 但查询数量却有数千个 这发生在单个 EJB 事务内 15 分钟后 数据库关闭连接
  • Oracle SQL:从表中选择数据和分区名称并截断分区

    这是一个由两部分组成的问题 1 是否可以根据数据所在的分区使用 select 语句检索其名称ROWID或者其他一些标识符 eg SELECT DATA ID CATEGORY VALUE PARTITION NAME FROM MYTABL

随机推荐

  • 快手APP内测「AI对话」

    快手 APP 现在有了 AI 对话能力 8 月 18 日晚 快手公布基于自研大语言模型应用的最新进展 快手 AI 对话 功能已经在快手 APP 安卓版本开放内测 参与测试的用户只需要在最新正式版本的 APP 上点击快手搜索首页右上角 AI
  • 常用Shell命令汇总-用户和用户组管理

    不知道大家平时有没有跟我一样的感受 就是很多shell命令自己其实用过 但时间一久又忘记了 导致又要到处百度 开始写这个系列的目的第一是为了总结 第二是为了以后忘记时可以直接到这找哈哈哈哈哈 平时在百度时还发现一个问题 就是其实我只想要最常
  • 2023华为OD机试真题【机房布局/模拟】

    题目描述 小明正在规划一个大型数据中心机房 为了使得机柜上的机器都能正常满负荷工作 需要确保在每个机柜边上至少要有一个电箱 为了简化题目 假设这个机房是一整排 M表示机柜 I表示间隔 请你返回这整排机房 至少需要多少个电箱 如果无解请返回
  • 安装 Android Studio

    安装 Android Studio 只需轻松点击几下 您需要已下载 Android Studio Windows 如需在 Windows 系统中安装 Android Studio 请执行以下操作 启动您下载的 exe 文件 根据安装向导的指
  • npz,npy的输入和读取np.load和np.save

    np load和np save 是读写磁盘数组数据的两个主要函数 默认情况下 数组是以未压缩的原始二进制格式保存在扩展名为 npy的文件中 np savez 如果你想将多个数组保存到一个文件中的话 可以使用numpy savez函数 sav
  • 数学建模中的经典问题-旅行商(TSP)问题

    1 相关理论 2 算法流程 3 代码实现 4 结果显示 1 相关理论 旅行商 TSP 问题是数学建模中的经典问题 它是一个典型的NP完全问题 TSP问题可描述为 已知n个城区相互之间的距离 某一旅行商从城市出发访问每个城市一次且仅一次 最后
  • ios -Unity3D的EasyAR集成到已经有项目中。

    近期 在做AR这一块 用EasyAR集成到iOS端 由于现在到项目已经上线 下一版本要做一个AR功能 于是迫于需求需要 自己研究和翻阅读好多集成到资料 通过整理分出几个重要到模块 其中在这里指出Xcode9版本确实好坑 建议弃坑 该用稍微好
  • android studio agpbi error,Android Studio 3.1.1 打Jar包出现AGPBI异常解决

    今天 写好Demo兴致勃勃准备打个Jar包在Unity中测试下 不料 突然出现AGPBI这个异常 日志如下 AGPBI kind error text Program type already present android support
  • Android Recyclerview焦点变化问题导致下拉刷新视觉卡顿

    如题 最近做项目时偶然发现了一个Recyclerview嵌套Recycleview的问题 业务模块是订单列表 涉及到一个订单包含多个子订单的情况 所以考虑使用嵌套来展示页面 这一切都是正常的 没有任何问题 然而 随着业务的展开需要查看详情单
  • 自己写的PLC编程软件,和FANUC PMC功能基本保持一致

    自己写的PLC编程软件 和FANUC PMC功能基本保持一致 下载地址 免积分 链接 pan baidu com s 162 GcF7wh SNT3McATPPmg 提取码 1234 https download csdn net down
  • 基于ShuffleNetv2-YOLOv4模型的目标检测

    目录 1 引言 摘要 1 1 说明 1 2替换完成的工程请参考gitee 2 网络结构基础 2 1YOLOv3 2 1 YOLOv4算法 2 3 ShuffleNetv2 2 4 替换后的网络结构 3 实验结果 3 1实验环境配置及数据集介
  • 时间复杂度+常见复杂度解释

    前言 算法的效率 虽然计算机能快速的完成运算处理 但实际上 它也需要根据输入数据的大小和算法效率来消耗一定的处理器资源 要想编写出能高效运行的程序 我们就需要考虑到算法的效率 算法的效率主要由以下两个复杂度来评估 时间复杂度 评估执行程序所
  • Vue long精度丢失问题

    原因 vue前端对long类型的精度无法接收 javascript 的 Number 类型最大长度是17位 mysql 使用bigint 类型长度是20位 前端解决方法 在全局的网络请求 用了一个处理数据的插件 来转换 后端解决的方法 Co
  • 网络安全不可忽视!企业如何做好网络安全。

    随着互联网的高速发展 其面临的安全隐患也暴露无疑 比如网络攻击 黑客入侵等 都会严重影响到网络业务的运行 为此很多企业都绞尽脑汁寻找抵御各类网络安全隐患 国家也出台了相关的等保方案让企业能够免于后顾之忧 下面我们来说说目前网络安全的具体内容
  • android音视频!BAT大厂面试基础题集合,不吃透都对不起自己

    前言 现在已经进入招聘季节 本篇文章旨在分享知名互联网企业面试官面试方法和心得 希望通过本文的阅读能给程序员带来不一样的面试体验和感受 放松面试心态 积极备战 找到正确的学习路线 一 架构师专题 想要掌握复杂的技术 必须要理解其原理和架构
  • ROS学习笔记(二)文件系统

    ROS学习笔记 二 文件系统 开篇 ROS的文件系统结构 要学会建立一个ROS工程 首先要认识一个ROS工程 了解它们的组织架构 从根本上熟悉ROS项目的组织形式 了解各个文件的功能和作用 才能正确的进行开发和编程 本章的主要内容有 介绍c
  • 就现在!为元宇宙和Web3对互联网的改造做准备!

    欢迎来到Hubbleverse 关注我们 关注宇宙新鲜事 预计阅读时长 8分钟 本文仅代表作者个人观点 不代表平台意见 不构成投资建议 如今 互联网是各种不同的网站 应用程序和平台的集合 由于彼此分离 它们缺乏互操作性和数据可移植性 因此
  • ant design vue中menu组件递归渲染报错解决

    ant design vue中menu组件递归渲染报错 开始递归组件后打开页面后报错如下 解决如下 使 单 件 式递归 成菜单 Before v2 0 因组件内部会动态更改a sub menu的属性 如果拆分单文件 无法将属性挂载到a su
  • BI的需求调研的方法分类

    今天看到一篇文章 里面提到需求调研的几种思路 觉得分类有些道理 结合项目写一下 这种方法论在指导实践和体现专业两个方面都很实用 1 现有报表 这个是最常用的 使用这种方法注意区别报表目的 紧急度 和数据是否适合在BI实现 细节度 为什么以前
  • Oracle统计多张表的Count数的和

    需求描述 Table1 job1 job1 id name status other column 1 file1 process 2 file2 failed 3 file3 success Table2 job2 job2 id nam