我在 ORACLE 的同一个查询中需要 2 个计数列

丑条

我正在尝试使用 2 个 count() 函数获取公司收到和发出的唯一数量的发票。在 invoices 表中有两列是对同一公司 ID 的引用(一列是发送发票的公司的 ID,另一列是接收发票的公司的 ID)这是我尝试使用的代码:

SELECT K.ID,K.NAME,K.CITY, COUNT(*) AS NUM_OF_INVOICES_SENT, COUNT(*) AS NUM_OF_INVOICES_RECEIVED
FROM COMPANY K LEFT JOIN INVOICE F ON F.COMP_SNEDING = K.ID 
GROUP BY K.NAME,K.ID,K.CITY

结果:

这是一个学校项目,所以我并不精通 sql/oracle

发票表的样本数据: 公司表的样本数据:实际数据发票:实际数据发票:实际数据公司:实际数据公司:给定实际数据的预期结果:给定实际数据的预期结果:

小脚

这是一种选择;它不使用count,但sumcase表达。

样本数据:

SQL> with
  2  invoice (id, amount, comp_sending, comp_receiving) as
  3    (select 1, 2000 , 1, 2 from dual union all
  4     select 2, 28250, 3, 2 from dual union all
  5     select 3, 8700 , 4, 1 from dual union all
  6     select 4, 20200, 5, 3 from dual union all
  7     select 5, 21500, 3, 4 from dual
  8    ),
  9  company (id, name, city, state) as
 10    (select 1, 'Microsoft', 'Redmond'  , 'Washington' from dual union all
 11     select 2, 'Ubisoft'  , 'Paris'    , 'France'     from dual union all
 12     select 4, 'Starbucks', 'Seattle'  , 'Washington' from dual union all
 13     select 5, 'Apple'    , 'Cupertino', 'California' from dual union all
 14     select 3, 'Nvidia'   , 'Cupertino', 'California' from dual
 15    )

查询从这里开始:

 16  select c.id, c.name,
 17    sum(case when c.id = i.comp_sending   then 1 else 0 end) cnt_sent,
 18    sum(case when c.id = i.comp_receiving then 1 else 0 end) cnt_received
 19  from company c left join invoice i on c.id in (i.comp_sending, i.comp_receiving)
 20  group by c.id, c.name
 21  order by c.id;

        ID NAME        CNT_SENT CNT_RECEIVED
---------- --------- ---------- ------------
         1 Microsoft          1            1
         2 Ubisoft            0            2
         3 Nvidia             2            1
         4 Starbucks          1            1
         5 Apple              1            0

SQL>

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如果我在同一个Go包中的2个文件的顶部导入“ fmt”,它会编译两次吗?

路口查询:谁在我的同一个团队中?

我可以在同一个WITH查询中选择多个表吗?

我们如何在同一个查询中插入多个值

我需要一直扫描excel中的同一个Cell

Cake PHP 3.4 - 如何在同一个查询中添加 2 个内部连接?

我需要将一个字符串传递给同一个活动中的一个片段,我试过这个,但它给出了一个错误

在行尾从同一个表中求和 2 个计数

我想从 mysql 中的同一个表中获取多个计数

同一个表上的 2 个不同查询,计数和分组依据

为什么我需要绑定一个通过同一个对象调用的阴影函数?

我可以在同一个查询中单独选择列值并作为一个串联选择列值并避免冗余代码吗?

如何更换?如果在同一个 oracle 查询中多次使用相同的值,则 oracle sql 中的值

sql (oracle) 在同一个 select/where 查询中计数和求和

我需要从 oracle 中的另一个 table2 创建一个 oracle table1。我需要插入数据作为table2的列名。例子

SQL JOIN 并需要一个视图:2 个外键引用同一个表

Oracle SQL 比较同一个表的行

我可以使用 JpaSpecificationExecutor 在同一个表中分组的子查询中创建 where 子句吗?

我不知道如何在同一个程序中执行多个查询

我需要一个避免字母和数字出现在同一个单词中的正则表达式

为什么我从同一个查询中得到两个不同的结果

如何对同一个查询 SQL 进行 2 个不同的计数?

我需要在另一个值上引用同一个对象的值

如果我在 k8s 中声明 2 个 PostgreSQL StatefulSet pod 副本,它们是同一个数据库还是只是共享卷?

我可以在 DAC 扩展中使用 PXDBScalar 来查询同一个表中的记录吗?

我可以在同一个 CDK 部署代码中为 Loki 和 Grafana 创建 2 个或更多 ECS 任务吗?

将 2 个 sql 查询中的 json 数据返回到同一个数组中

如何向同一个表中添加一列,使表中的 2 列唯一(查询)

我如何使用猫鼬在同一个查询中多次填充