Solved

SQL % Calculation

Posted on 2015-02-06
5
128 Views
Last Modified: 2015-02-06
have a very basic qry  that counts number of active customers vs those customers that have been verified with current data and shows the percent of "verified" accounts.

The date is showing 186 verified out of 325 Active, but my percent results show 39.42 not 57.23



SELECT  COUNT(uppnverify) AS 'Verified GM Customers'
FROM CONTACT2
WHERE UPPNVERIFY like '201%'


SELECT COUNT(ACCOUNTNO)AS 'Active Customers'
FROM CONTACT2
WHERE USALESYTD IS NOT NULL AND USALES2014 IS NOT NULL



SELECT CAST([Verified Customers] * 100.0 / [Active Customers] AS decimal(4, 2)) AS [%age of GM verified customers]
    --, [Verified Customers], [Active Customers]
FROM (
    SELECT
        --count number of GM company with verified field
        SUM(CASE WHEN UPPNVERIFY like '201%' THEN 1 ELSE 0 END) AS [Verified Customers],
        -- count number of GM company with active status (sales in last 2 yr)
        SUM(CASE WHEN USALESYTD IS NOT NULL AND USALES2013 IS NOT NULL THEN 1 ELSE 0 END) AS [Active Customers]
    FROM CONTACT2
    WHERE
        (UPPNVERIFY like '2015%') OR
        (USALESYTD IS NOT NULL AND USALES2014 IS NOT NULL)
) AS subquery1
0
Comment
Question by:Jeremy Kirkbride
  • 2
  • 2
5 Comments
 
LVL 26

Expert Comment

by:Shaun Kline
ID: 40593645
Your WHERE clause uses (UPPNVERIFY like '2015%') which may be excluding results you are expecting with just (UPPNVERIFY like '201%').
0
 

Author Comment

by:Jeremy Kirkbride
ID: 40593845
Gotcha, changed the statement to 201%, the percentage is much closer but still calculating 59.6, math has never been my strong point, but I get 57% from 186 out of 325

SELECT  COUNT(uppnverify) AS 'Verified GM Customers'
FROM CONTACT2
WHERE UPPNVERIFY like '201%'


SELECT COUNT(ACCOUNTNO)AS 'Active Customers'
FROM CONTACT2
WHERE USALESYTD IS NOT NULL AND USALES2014 IS NOT NULL



SELECT CAST([Verified Customers] * 100.0 / [Active Customers] AS decimal(4, 1)) AS [%age of GM verified customers]
    --, [Verified Customers], [Active Customers]
FROM (
    SELECT
        --count number of GM company with verified field
        SUM(CASE WHEN UPPNVERIFY like '201%' THEN 1 ELSE 0 END) AS [Verified Customers],
        -- count number of GM company with active status (sales in last 2 yr)
        SUM(CASE WHEN USALESYTD IS NOT NULL AND USALES2013 IS NOT NULL THEN 1 ELSE 0 END) AS [Active Customers]
    FROM CONTACT2
    WHERE
        (UPPNVERIFY like '201%') OR
        (USALESYTD IS NOT NULL AND USALES2014 IS NOT NULL)
) AS subquery1
0
 
LVL 69

Accepted Solution

by:
Scott Pletcher earned 500 total points
ID: 40593908
The calc will work, since computers don't mess up simple math :-).

Uncomment the other values in the outer query and you can see the actual totals SQL is using, which will differ from your expected totals of 186 and 325 somewhat, which will explain the difference in %.

SELECT CAST([Verified Customers] * 100.0 / [Active Customers] AS decimal(4, 1)) AS [%age of GM verified customers]
     , [Verified Customers], [Active Customers]


Edit: Just saw the data conflict in the query:
...
 SUM(CASE WHEN USALESYTD IS NOT NULL AND USALES2013 IS NOT NULL THEN 1 ELSE 0 END) AS [Active Customers]
     FROM CONTACT2
     WHERE
         (UPPNVERIFY like '201%') OR
         (USALESYTD IS NOT NULL AND USALES2014 IS NOT NULL)
0
 
LVL 26

Expert Comment

by:Shaun Kline
ID: 40593912
Another WHERE Clause discrepancy:
SUM(CASE WHEN USALESYTD IS NOT NULL AND USALES2013 IS NOT NULL THEN 1 ELSE 0 END)

versus:
 (USALESYTD IS NOT NULL AND USALES2014 IS NOT NULL)

Looks like your result set may not be returning the records you are expecting.
0
 

Author Closing Comment

by:Jeremy Kirkbride
ID: 40594062
Thanks so much. All good now
0

Featured Post

What is SQL Server and how does it work?

The purpose of this paper is to provide you background on SQL Server. It’s your self-study guide for learning fundamentals. It includes both the history of SQL and its technical basics. Concepts and definitions will form the solid foundation of your future DBA expertise.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

When you hear the word proxy, you may become apprehensive. This article will help you to understand Proxy and when it is useful. Let's talk Proxy for SQL Server. (Not in terms of Internet access.) Typically, you'll run into this type of problem w…
The Delta outage: 650 cancelled flights, more than 1200 delayed flights, thousands of frustrated customers, tens of millions of dollars in damages – plus untold reputational damage to one of the world’s most trusted airlines. All due to a catastroph…
Using examples as well as descriptions, and references to Books Online, show the different Recovery Models available in SQL Server and explain, as well as show how full, differential and transaction log backups are performed
Viewers will learn how to use the UPDATE and DELETE statements to change or remove existing data from their tables. Make a table: Update a specific column given a specific row using the UPDATE statement: Remove a set of values using the DELETE s…

829 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question