sql - How to get users that purchased items ONLY in a specific time period (MySQL Database) -


i have table contains purchased items.

i need check users purchased items in specific period of time (say between 2013-03-21 2013-04-21) , never purchased after that.

i can select users purchased items in period of time, don't know how filter users never purchased after that...

select `userid`, `email` my_table  `date` between '2013-03-21' , '2013-04-21' group `userid` 

give try

select    user_id    my_table     purchase_date >= '2012-05-01'        --your_start_date group    user_id having    max(purchase_date) <= '2012-06-01';  --your_end_date 

it works getting records >= start date, groups resultset user_id , finds max purchase date every user. max purchase date should <=end date. since query not use join/inner query faster

test data

create table user_purchases(user_id int, purchase_date date); insert user_purchases values (1, '2012-05-01'); insert user_purchases values (2, '2012-05-06'); insert user_purchases values (3, '2012-05-20'); insert user_purchases values (4, '2012-06-01'); insert user_purchases values (4, '2012-09-06'); insert user_purchases values (1, '2012-09-06'); 

output

| user_id | ----------- |       2 | |       3 | 

sqlfiddle


Comments

Popular posts from this blog

How to mention the localhost in android -

php - Calling a template part from a post -

c# - String.format() DateTime With Arabic culture -