我正在爲我的大學的一個項目工作,而且它非常重要,我明白了。我認爲我有它的工作原理,但是我必須在過去的幾天裏學習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