Please start any new threads on our new site at https://forums.sqlteam.com. We've got lots of great SQL Server experts to answer whatever question you can come up with.

 All Forums
 General SQL Server Forums
 New to SQL Server Programming
 How to calculate Percentage from 2 columns

Author  Topic 

shahid09
Starting Member

35 Posts

Posted - 2009-09-22 : 13:16:42
Hi All,

I am trying to calculate % based on the result of 2 columns. Assuming Count returns Integer value my code is in bold below but i am getting 0's in the output colum (all rows)

SELECT
REQUIREMENTS,
Count(REQUIREMENTS) As TotalRequirements,
Sum(TestCoverage) As TotalTestCases,
Count(case when TestCoverage > 0 Then TestCoverage End) As REQhasCoverage ,
Count(case when TestCoverage = 0 Then TestCoverage End) As REQnoCoverage ,
Sum(TestCaseValidated) AS TestCaseValidated,
(Count(case when TestCoverage > 0 Then TestCoverage End)/
Count(REQUIREMENTS)) AS Percentage

FROM
(
SELECT
REQ.RQ_REQ_ID,
REQ.RQ_REQ_NAME,
COUNT(REQ_COVER.RC_ITEM_ID) AS TestCoverage ,
(SELECT COUNT(CASE WHEN TEST.TS_USER_24 <> '' Then TEST.TS_USER_24 END)
FROM TEST, REQ_COVER
WHERE REQ_COVER.RC_ENTITY_ID = TEST.TS_TEST_ID AND REQ.RQ_REQ_ID =
REQ_COVER.RC_REQ_ID
)AS TestCaseValidated,
REQUIREMENTS =
Case
WHEN RQ_REQ_PATH Like 'AAAAADAARAADAAC%' Then 'Medicare'
WHEN RQ_REQ_PATH Like 'AAAAADAALAAN%' THEN 'MHSA'
WHEN RQ_REQ_PATH Like 'AAAAADAALAAPAAB%' THEN 'OBRA-90'
WHEN RQ_REQ_PATH Like 'AAAAADAALAAPAAC%' THEN 'OBRA-93'
WHEN RQ_REQ_PATH Like 'AAAAADAALAAI%' THEN 'Denied Processing'
WHEN RQ_REQ_PATH Like 'AAAAADAALAAUAAA%' THEN 'CE (HIPAA)'
WHEN RQ_REQ_PATH Like 'AAAAADAALAAUAAB%' THEN 'CE (EOB)'
WHEN RQ_REQ_PATH Like 'AAAAADAALAAUAAC%' THEN 'CE (ADR)'
Else
'Unknown'
END
FROM REQ
LEFT JOIN REQ_COVER
ON REQ.RQ_REQ_ID = REQ_COVER.RC_REQ_ID
WHERE
REQ.RQ_TYPE_ID IN (3,4) --AND REQ.RQ_REQ_PATH LIKE 'AAAAAD%'
GROUP BY REQ.RQ_REQ_NAME, REQ.RQ_REQ_ID, REQ.RQ_REQ_PATH, REQ.RQ_REQ_AUTHOR
) T
Group by REQUIREMENTS
ORDER BY REQUIREMENTS


Thanks in advance,
Shahid

TG
Master Smack Fu Yak Hacker

6065 Posts

Posted - 2009-09-22 : 13:22:05
you need to cast "Count(REQUIREMENTS)" as numeric with a scale of at least 1.

ie look at the result of this:
select 5/7, 5/7.0

Be One with the Optimizer
TG
Go to Top of Page

JCirocco
Constraint Violating Yak Guru

392 Posts

Posted - 2009-09-22 : 14:01:38
100 * ((Cast(Count(case when TestCoverage > 0 Then TestCoverage End)AS decimal) / (Cast(Count(REQUIREMENTS)) AS decimal)) AS Percentage


John

"The smoke monster is just the Others doing barbecue"
Go to Top of Page

shahid09
Starting Member

35 Posts

Posted - 2009-09-22 : 14:20:51
Thanks TG and John! It works fine.
Go to Top of Page

madhivanan
Premature Yak Congratulator

22864 Posts

Posted - 2009-09-23 : 02:51:36
Also refer
http://sqlblogcasts.com/blogs/madhivanan/archive/2008/01/16/beware-of-implicit-conversions.aspx

Madhivanan

Failing to plan is Planning to fail
Go to Top of Page
   

- Advertisement -