2012-08-15 31 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