2015-04-02 84 views
3

總結組內計數我有以下一組數據:崩潰和

SalesPerson PackageHistoryID PackageID SalesPersonID EnrollmentAmount PackageType 
------------------------------------------------------------------------------------------- 
Jim Jones 2895    310   59019   27.15    New Member 
Jim Jones 2895    310   59019   53.21    New Member 
Jim Jones 2895    310   59019   42.35    New Member 
Jim Jones 2916    221   59019   379.01    Renewal 
Jim Jones 2932    326   59019   53.21    New Member 
Jim Jones 2932    326   59019   27.15    New Member 
Jim Jones 2933    326   59019   53.21    Renewal 
Jim Jones 2933    326   59019   27.15    Renewal 

在該數據集我運行下面的查詢:

select Salesperson, PackageType, count(*) AS Packages, sum(EnrollmentAmount) AS Enrollment 
from Sales2 
group by SalesPerson, PackageType 
order by SalesPerson, PackageType 

...我得到這些結果:

Salesperson PackageType Packages  Enrollment 
---------------------------------------------------- 
Jim Jones  New Member  5   203.07 
Jim Jones  Renewal  3   459.37 

我上面顯示的最終結果幾乎完美。唯一的問題是Packages列中的計數。計數應該是2和2,而不是5和3,因爲我希望它指示每個PackageHistoryID的PackageType數量,而不是每個EnrollmentAmount。我希望總計EnrollmentAmounts,以便記錄可以被壓縮,以便PackageHistoryID永不重複。顯示的第一個數據集顯示PackageHistory記錄和EnrollmentAmount之間的一對多關係。我想我的第二查詢(集團通過)將正確地聚合這一點,但你可以看到,它顯示了總共8個PackageHistories當它真的應該只顯示4

下面是最終的結果集應該是什麼樣子:

Salesperson PackageType Packages  Enrollment 
---------------------------------------------------- 
Jim Jones  New Member  2   203.07 
Jim Jones  Renewal  2   459.37 

2和2表示結果集中確實只有4個PackageHistory記錄; 2人是新會員,2人是續約。多個EnrollmentAmount記錄導致記錄太多,因此計數在最終查詢中得到錯誤展開。

重要注意事項:雖然SalesPerson在結果顯示中始終相同,但它們有時可能會不同,儘管它們對於任何給定的PackageHistory(1-1)都是相同的。分組需要(1)SalesPerson,然後(2)PackageType,並在每個獨特的PackageHistory內彙總/壓扁EnrollmentAmounts。

什麼查詢會給我正確的結果?

回答

4

你應該做的,而不是count(distinct PackageHistoryID)count(*)

select Salesperson, PackageType, count(distinct PackageHistoryID) AS Packages, 
     sum(EnrollmentAmount) AS Enrollment 
from Sales2 
group by SalesPerson, PackageType 
order by SalesPerson, PackageType 
+0

剛來到這裏,說同樣的話,那麼你會得到我的+1,而不是:) – LittleBobbyTables 2015-04-02 20:38:55

+0

Giorgos,非常感謝!我一直在做sql很長一段時間,但我不知道伯爵(獨特的...)。現在完美了! – HerrimanCoder 2015-04-02 20:40:16

+1

另外我愛你的用戶名LittleBobbyTables。偉大的卡通,那一個! – HerrimanCoder 2015-04-02 20:41:51