目前,我正在努力检索按一段时间内支出金额计算的前 10 条记录。
MySQL 表:
create table `payment_holder` (
`user_id` int (11),
`amount` Decimal (6),
`date_added` datetime
);
演示数据:
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');
我想从这个示例中检索如下所示的结果:
user_id amount
------------------
6 64.40
5 64.40
4 7.5
8 7.5
7 1.78
简而言之,根据 date_added
,2012 年哪个 user_id
的购买量最高?
最佳答案
你有没有试过这样的东西,它会返回所有年份的所有数据:
select user_id, sum(amount) Amount
from payment_holder
group by user_id
order by amount desc
limit 0, 10
但是如果你想按年份限制,你可以添加一个 WHERE
子句,它将 YEAR()
函数应用到 date_added
领域:
select user_id, sum(amount) Amount
from payment_holder
where year(date_added) = 2012
group by user_id
order by amount desc
limit 0, 10
关于mysql - 选择按一段时间内花费的金额计算的前 10 条记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13745855/