Hi David,

David Scott wrote:

I am looking at data from a telephone call centre.

I have a table giving data on calls made including time and date with the name CallDateTime. Each call has a number, CallId and each customer has a number CustomerNo. Each row represents a different call.

I would like to create a column which identifies the first call made by a customer in a particular month. That is if a particular call is the first call made by that customer in that month, there is a 1 in the column, otherwise there is a zero.

I would also like to identify the second call (if any) made by the customer in a particular month.

I am quite inexperienced with MySQL and SQL in general and would appreciate any help which you can offer.

There are many solutions to this type of query. I have written about some of them at http://www.xaprb.com/blog/2006/12/07/how-to-select-the-firstleastmax-row-per-group-in-sql/.

For your particular query, I would start by just writing a query to find the rows, then progress to maintaining the column later. Probably something like this would do it:

select calls.* from calls
inner join (
   select CustomerNo, min(CallDateTime) as CallDateTime
   from calls
   group by CustomerNo, left(CallDateTime, 7)
) as min_rows using(CustomerNo, CallDateTime)

This may not be the most efficient way to do the query, but I think once you learn how it works you can worry about that. (Only you can do that, because you know the table structure and the kinds of queries you're doing).

Finding the second call is just an extension of this technique. More is in the article I linked.

cheers
Baron

--
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]

Reply via email to