开发者

How to use sum and count functions

I am trying to get the total count and total sum per salesperson but its not working in my WITH query

Currently I have:

 WITH CALC1 AS (
   SELECT B.OTSMAN AS SALESMAN, COUNT(B.ONINUM) AS COUNT, SUM(B.OVSVAL) AS SVAL 
   FROM @LIB@.DGLOESUMD AS B 
   WHERE B.OCSGRP <> 'INT' AND 
         B.OC开发者_JAVA百科SGRP <> 'INX' AND 
         B.OCPSBR IN (@OCPSBR@) AND 
         B.ICMATX <> '705' AND 
         B.OCSGRP NOT LIKE 'S/%' 
  GROUP BY B.OTSMAN, B.ONINUM ORDER BY B.OTSMAN ASC
 )
 SELECT SALESMAN, COUNT,  SVAL FROM CALC1 ORDER BY SALESMAN

THE RESULT IS:

AM  1   79.03
AM  40  1337.70
AM  48  4627.15
AM  42  2727.40
AM  1   111.79
AM  1   1110.00
AM  52  3018.77

How do i change my query so I only get one record with the total count and value per salesperson?

AM  1   13,011.84


Change the GROUP BY to

GROUP BY B.OTSMAN

Something like

;WITH CALC1 AS (
        SELECT  B.OTSMAN AS SALESMAN, 
                COUNT(B.ONINUM) AS COUNT, 
                SUM(B.OVSVAL) AS SVAL 
        FROM    @LIB@.DGLOESUMD AS B 
        WHERE   B.OCSGRP <> 'INT' 
        AND     B.OCSGRP <> 'INX' 
        AND     B.OCPSBR IN (@OCPSBR@) 
        AND     B.ICMATX <> '705' 
        AND     B.OCSGRP NOT LIKE 'S/%' 
        GROUP BY    B.OTSMAN
        ORDER BY    B.OTSMAN ASC
) 

SELECT  

SALESMAN, 
COUNT,  
SVAL 

FROM CALC1 

ORDER BY SALESMAN 


You need to change your group by like this:

with calc1 as 
(select b.otsman as salesman, 
        count(distinct b.oninum) as count, 
        sum(b.ovsval) as sval 
   from @lib@.dgloesumd as b 
  where b.ocsgrp <> 'INT' 
    and b.ocsgrp <> 'INX' 
    and b.ocpsbr in (@ocpsbr@) 
    and b.icmatx <> '705' 
    and b.ocsgrp not like 'S/%' 
 group by b.otsman 
)
select salesman,
       count, 
       sval
  from calc1
order by salesman

Update: Updated to get distinct orders count per salesman

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜