gpt4 book ai didi

database - 从两个不同的表中得到不同的计数?

转载 作者:搜寻专家 更新时间:2023-10-30 22:00:57 26 4
gpt4 key购买 nike

我在尝试用 Oracle 编写查询时遇到问题。

基本上我想获得具有相同提供者列表的两个表的计数。我可以单独运行查询,但不确定如何一次性完成。

这是一个例子:

SELECT name, COUNT(name)
FROM table1
group by name

这给了我一个名字列表和旁边的一个计数。如果我在 table2 上运行相同的命令(更改 from 语句),它工作正常。我想要做的是有一个查询,从 table1 中获取计数并将它从 table2 中的计数中减去。

我该怎么做?我尝试过嵌套选择等等,但似乎无法正常工作。

最佳答案

假设两个表中的 name 值相同的一个选项是

SELECT t1.name, t2.cnt - t1.cnt diff
FROM( SELECT name, COUNT(name) cnt
FROM table1
group by name ) t1,
( SELECT name, COUNT(name) cnt
FROM table2
group by name ) t2
WHERE t1.name = t2.name

如果你想处理一个表有一个 name 而另一个没有的情况,但你不知道哪个表有额外的名称(假设你想说另一个表的 cntname)

SELECT coalesce(t1.name, t2.name) name, 
nvl(t1.cnt, 0 ) t1_cnt,
nvl(t2.cnt, 0 ) t2_cnt,
nvl(t2.cnt,0) - nvl(t1.cnt,0) diff
FROM( SELECT name, COUNT(name) AS cnt
FROM table1
group by table1.name ) t1
full outer join
( SELECT name, COUNT(name) AS cnt
FROM table2
group by table2.name ) t2
on( t1.name = t2.name )

你可以在这个 SQLFiddle 中看到

关于database - 从两个不同的表中得到不同的计数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14468229/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com