Home All Groups Group Topic Archive Search About

Count by month in summarized data

Author
11 Aug 2005 9:14 PM
zoranlee
create table calls
(
customer char(10),
call_date datetime,
called_number char(10),
call_ammount char(10)
)

insert calls values('Customer1','1/1/2005','555-1234','1.00')
insert calls values('Customer2','1/2/2005','555-1231','0.50')
insert calls values('Customer3','1/1/2005','555-1232','5.00')
insert calls values('Customer4','2/1/2005','555-1233','1.00')
insert calls values('Customer1','2/2/2005','555-1234','1.00')
insert calls values('Customer1','2/3/2005','555-1235','1.00')
insert calls values('Customer2','2/4/2005','555-1236','3.00')
insert calls values('Customer4','2/1/2005','555-1237','2.00')
insert calls values('Customer5','3/1/2005','555-1238','2.00')

I need to get a list of customers calling for > $2.50 a month.

select MONTH(call_date) as Months
, customer
,sum (cast(call_ammount as decimal(3,2))) as 'SUM $'
,count( distinct  customer ) as 'No. of cust.'
from calls with(nolock)
where call_date >= '1/1/2005'
group by MONTH(call_date), customer
--with rollup
HAVING sum(cast(call_ammount as decimal(3,2))) > 2.5
order by Months
, 'SUM Ammount $' desc

(without the counts) will get what I need .

Months    Customer    SUM $    No. of cust.
1    Customer3     5.00    1
2    Customer2     3.00    1
2    Customer4     3.00    1
3    Customer5     3.00    1

Turns out , I 'd also need to get monthly counts (ideally with $
totals) of these customers .
This is where I get stuck.
When I add a count to the query I have the result as shown above but
what I'd need is

Months    SUM $    No. of cust.
1    5.00    1
2    6.00    2
3    3.00    1

or totals like with Rollup but Rollup doesn't work with distinct count.

BTW yes, this is simplified, and I know this is bad (no) design but
there is nothing I can do about that at the moment.

TIA

Z

Author
11 Aug 2005 9:27 PM
Alejandro Mesa
Try using your query as a derived table.

select
    months,
    sum([SUM $]) as c1,
    sum([No. of cust.]) as c2
from
    (
select MONTH(call_date) as Months
, customer
,sum (cast(call_ammount as decimal(3,2))) as 'SUM $'
,count( distinct  customer ) as 'No. of cust.'
from calls with(nolock)
where call_date >= '1/1/2005'
group by MONTH(call_date), customer
HAVING sum(cast(call_ammount as decimal(3,2))) > 2.5
    )
group by
    months


AMB


Show quote
"zoran***@hotmail.com" wrote:

> create table calls
> (
> customer char(10),
> call_date datetime,
> called_number char(10),
> call_ammount char(10)
> )
>
> insert calls values('Customer1','1/1/2005','555-1234','1.00')
> insert calls values('Customer2','1/2/2005','555-1231','0.50')
> insert calls values('Customer3','1/1/2005','555-1232','5.00')
> insert calls values('Customer4','2/1/2005','555-1233','1.00')
> insert calls values('Customer1','2/2/2005','555-1234','1.00')
> insert calls values('Customer1','2/3/2005','555-1235','1.00')
> insert calls values('Customer2','2/4/2005','555-1236','3.00')
> insert calls values('Customer4','2/1/2005','555-1237','2.00')
> insert calls values('Customer5','3/1/2005','555-1238','2.00')
>
> I need to get a list of customers calling for > $2.50 a month.
>
> select MONTH(call_date) as Months
> , customer
> ,sum (cast(call_ammount as decimal(3,2))) as 'SUM $'
> ,count( distinct  customer ) as 'No. of cust.'
> from calls with(nolock)
> where call_date >= '1/1/2005'
> group by MONTH(call_date), customer
> --with rollup
> HAVING sum(cast(call_ammount as decimal(3,2))) > 2.5
> order by Months
> , 'SUM Ammount $' desc
>
> (without the counts) will get what I need .
>
> Months    Customer    SUM $    No. of cust.
> 1    Customer3     5.00    1
> 2    Customer2     3.00    1
> 2    Customer4     3.00    1
> 3    Customer5     3.00    1
>
> Turns out , I 'd also need to get monthly counts (ideally with $
> totals) of these customers .
> This is where I get stuck.
> When I add a count to the query I have the result as shown above but
> what I'd need is
>
> Months    SUM $    No. of cust.
> 1    5.00    1
> 2    6.00    2
> 3    3.00    1
>
> or totals like with Rollup but Rollup doesn't work with distinct count.
>
> BTW yes, this is simplified, and I know this is bad (no) design but
> there is nothing I can do about that at the moment.
>
> TIA
>
> Z
>
>

AddThis Social Bookmark Button