2012-08-15 74 views
0

早上好,是否可以通過交叉表查詢計算2個計算列的百分比,我的減少查詢是低於?Mysql交叉表查詢計數的百分比?

Select 
    a.ContactFullName As Adviser, 
    Sum(Month(b.CaseDate) = 1) As Jan, 
    Sum(Month(b.CaseDate) = 2) As Feb, 
    Sum(Month(b.CaseDate) = 3) As Mar, 
    Count(b.CaseID) As Total, 
    Count(b.StatusSubmittedDate) As Comms 

From 
    tblcontacts a Inner Join 
    tblcases b On a.ContactID = b.ContactAssignedTo 
Group By 
    a.ContactFullName With Rollup 

這是輸出月份作爲顯示個案在每個月的列。總列計數行,而通信列僅計算具有日期的情況。我想要做的是計算Total/Comms的百分比;

Total | Comms | %_Share 
100 | 50 | 50% 
346 | 53 | 15% 
278 | 89 | 32% 

我看着錯誤的方式,我應該創造多個查詢來實現嗎?

感謝您尋找

回答

1

只需選擇另一列:

Select …, 
    100*Count(b.StatusSubmittedDate)/Count(b.CaseID) As `%_Share` 
From … 

這是100 *通信/總的來說,這樣你的預期輸出指示,而不是總/通訊,你在文中寫道。

就我所知,直接重新使用一個計算列來計算另一個計算列中的值是不可能的。但重複評估Count的開銷不應該太嚴重,甚至MySQL甚至可能會檢測到這些常用術語,並只計算一次,我不知道。

+0

輝煌的,正是我所需要的非常感謝你的時間,它的位置。 – gary 2012-08-15 11:28:37

+1

@gary,任何時候。 – MvG 2012-08-15 13:39:13