I have a problem that is similar to the question posted here " How can I subtract a previous row in sql? " but is more complex. Some solutions use an incremented ID number, my data does not natively have this, but open adding one if needed (but would need help with query to do this). I am trying to find the average number of days between email-opens for EACH user. my data looks like this
**Email Address | Open Date | CampaignName**
Email1@gmail | 01/01/2013 | WelcomeCampaign
Email1@gmail | 03/01/2013 | WelcomeCampaign
Email1@gmail | 05/20/2013 | WelcomeCampaign
Email2@gmail | 01/16/2013 | WelcomeCampaign
Email2@gmail | 02/28/2013 | WelcomeCampaign
Email3@gmail | 01/05/2013 | WelcomeCampaign
Email3@gmail | 01/10/2013 | WelcomeCampaign
Email3@gmail | 02/15/2013 | WelcomeCampaign
Email3@gmail | 03/15/2013 | WelcomeCampaign
Email3@gmail | 04/02/2013 | WelcomeCampaign
The need is to get the data like this, where each date is subtracted from the previous record if email address matches
**Email Address | Open Date | CampaignName | DaysBetween**
Email1@gmail | 01/01/2013 | WelcomeCampaign | NA
Email1@gmail | 03/01/2013 | WelcomeCampaign | 60
Email1@gmail | 05/20/2013 | WelcomeCampaign | 80
Email2@gmail | 01/16/2013 | WelcomeCampaign | NA
Email2@gmail | 02/28/2013 | WelcomeCampaign | 42
Email3@gmail | 01/05/2013 | WelcomeCampaign | NA
Email3@gmail | 01/10/2013 | WelcomeCampaign | 5
Email3@gmail | 02/15/2013 | WelcomeCampaign | 35
Email3@gmail | 03/15/2013 | WelcomeCampaign | 30
Email3@gmail | 04/02/2013 | WelcomeCampaign | 17
I then plan to average for each user (email2@gmail would be 70 days)