Currently I’m struggling on retrieving top 10 records calculated by amount spend over a period of time.
MySQL table:
create table `payment_holder` (
`user_id` int (11),
`amount` Decimal (6),
`date_added` datetime
);
Demo data:
insert into `payment_holder` (`user_id`, `amount`, `date_added`) values('4','3.75','2012-03-15 00:41:39');
insert into `payment_holder` (`user_id`, `amount`, `date_added`) values('5','32.20','2012-03-15 00:42:10');
insert into `payment_holder` (`user_id`, `amount`, `date_added`) values('6','32.20','2012-03-15 00:42:58');
insert into `payment_holder` (`user_id`, `amount`, `date_added`) values('7','0.89','2012-03-15 00:48:05');
insert into `payment_holder` (`user_id`, `amount`, `date_added`) values('8','3.75','2012-03-15 00:50:54');
insert into `payment_holder` (`user_id`, `amount`, `date_added`) values('4','3.75','2012-03-15 00:41:39');
insert into `payment_holder` (`user_id`, `amount`, `date_added`) values('5','32.20','2012-03-15 00:42:10');
insert into `payment_holder` (`user_id`, `amount`, `date_added`) values('6','32.20','2012-03-15 00:42:58');
insert into `payment_holder` (`user_id`, `amount`, `date_added`) values('7','0.89','2012-03-15 00:48:05');
insert into `payment_holder` (`user_id`, `amount`, `date_added`) values('8','3.75','2012-03-15 00:50:54');
I would like retrieve a result like the following it from this example:
user_id amount
------------------
6 64.40
5 64.40
4 7.5
8 7.5
7 1.78
So in short, which user_id has the highest amount of purchases based on date_added in 2012?
Have you tried something like this which will return all data for all years:
See SQL Fiddle with Demo
But if you want to limit by year, you can add a
WHEREclause which will apply theYEAR()function to thedate_addedfield: