我正在为我的大学的一个项目工作,而且它非常重要,我明白了。我认为我有它的工作原理,但是我必须在过去的几天里学习SQL才能做到这一点,我想在这里发布它来仔细检查所有比我更了解SQL的人。对于一组ID在另一列中挑出不同的ID并计数
这里是一个小例子来测试
index BorrowerID CompanyID PackageID
---------- ---------- ---------- ----------
0 1 100 10
1 1 200 10
2 2 300 20
3 2 300 20
4 2 400 20
5 2 100 20
6 3 400 30
7 3 100 30
8 3 200 30
9 1 100 40
目标:
我们想知道的次公司贷款借款人的数量。在银团贷款中,可能会在一个包裹中存在多笔贷款,因此每个包裹只计算一次。公司可能向同一借款人出借多个包裹,这些都需要增加计数。理想情况下,我们会有一个数据集,其中有借款人与公司有关系,定义为至少从一个公司获得一笔贷款。以下是测试结果:
BorrowerID CompanyID testResults
---------- ---------- -----------
1 100 2
1 200 1
2 100 1
2 300 1
2 400 1
3 100 1
3 200 1
3 400 1
借款人ID 1从银行100两次不同时间借入。一旦进入包装10,然后再进入包装40.结果显示2为正确的计数。所有其他人都是正确的,因为他们只与银行有一种关系。
这是我已经运行到完成这个查询:
.open testdb.db
.mode column
.headers on
select * from testdb;
drop table if exists innerQ;
create table innerQ
AS select PackageID, BorrowerID, CompanyID, count(*) as c
from testdb
group by PackageID, CompanyID
order by PackageID asc;
.print
.print 'inner query'
select * from innerQ;
.print
.print 'test'
select BorrowerID, CompanyID, count(*) as testResults
from innerQ
group by BorrowerID, CompanyID
order by BorrowerID asc;
我真的很想知道,如果我让这对整个数据集,其构造方式与测试相同的松动,将它做正确的事情?我想知道它是否会让我失望,因为在我的简单测试中,以及我运行它的多个其他人已经正确地通过了所有测试,但是我的研究小组中的其他人有一些不同的结果,我强烈怀疑是错误的,但不是100%确定的。我将不胜感激,如果你们都能权衡
这真棒,我验证你的解决方案的作品。我认为我会重构我的代码来实现你的方式。 – debo