2 selects from 1 table, one sum and one count

Posted on

Question :

I’m after some help, only just starting out in SQL.

I have 1 table which I am trying to run 2 selects from 2 columns, one is for a COUNT and the other is for a SUM, I can get them to run ok separately but when trying to get them as one query, this is when it fails.

the table holds lots of dates so my query only selects the last 3 days and counts up one column that is anything that is not blank, and the other select gets the last 3 dates and sums up anything over zero.

please see what I have so far,

For the COUNT.

SELECT   'u_telephone_data' As Type,
         u_call_date, 
         COUNT(u_dialled_digits),             
FROM     u_telephone_data  
WHERE    u_dialled_digits <>'' 
AND      u_call_date between dateadd(day, -3, curdate()) and curdate()  
GROUP BY u_call_date, u_dialled_digits

For the SUM

SELECT       'u_telephone_data' As Type,
             u_call_date, 
             SUM (u_calls_offered) 
FROM         u_telephone_data  
WHERE        u_calls_offered >= '0'
AND          u_call_date between dateadd(day, -3, curdate()) and curdate() 
GROUP BY     u_call_date, u_calls_offered

Sorry about the way its been displayed, hope it makes sense.

Answer :

These two queries should be able to be merged without too much trouble.. Something like the below should do the trick:

SELECT   'u_telephone_data' As Type,
     u_call_date, 
     SUM(CASE when u_dialled_digits <> '' then 1 else 0 end) as dialled,
     SUM(CASE when u_calls_offered >= 0 then u_calls_offered else 0 end) as Offered
FROM     u_telephone_data  
WHERE    u_call_date between dateadd(day, -3, getdate()) and getdate()  
GROUP BY u_call_date

Leave a Reply

Your email address will not be published. Required fields are marked *