Good evening all,
I've been wrestling with this one all day.
I'm attempting to update a column in my customer table that will show the number of times they have been a subscriber. This table is created from a big data dump that has individual rows for every customer, and every month they were a subscriber (allocated an iterating number for each month). The names are unique. It looks something like this and shows that (for example) Jane Doe was a subscriber in period 1000, but not in period 1002.
Row_ID Customer_Name Date_Code
1 Jane Doe 1000
2 Jane Doe 1001
3 Jane Doe 1004
4 Jane Doe 1005
5 Ted Jones 1000
6 Ted Jones 1001
7 Ted Jones 1002
etc...
In this case Jane Doe was a subscriber from 1000-1001, left our subscription, and then came back from 1004-1005. I have a master table that includes all the date logic (start date, end date, date code etc...). It looks roughly like this:
Start_Date End_Date Date_Code
1990-01-01 1990-03-31 1000
1990-04-01 1990-06-30 1001
1990-07-01 1990-09-30 1002
1990-10-01 1990-12-31 1003
etc...
I'm trying to find a way to make the output something like:
Customer_Name Subscription_Count
Jane Doe 2
Ted Jones 1
Has anyone run into something like this before? It's obvious to me (as a human) that the numbers are (or not) consecutive and are (or not) a representation of the entire sample, but I'm not sure how to make MYSQL understand it. I appreciate any ideas.
*EDIT - I tried both the Join and Where Not Exists alternatives, and both timed out after 10 minutes. I believe it's due to the size of the main table (~100,000 lines). Do you have any suggestions? Thanks again for the all the comments.
**EDIT #2 - After adding indices and tweaking my tables a bit, both solutions work great. Thanks again for the support in figuring this out.