mysql - 选择按一段时间内花费的金额计算的前 10 条记录?

标签 mysql

目前,我正在努力检索按一段时间内支出金额计算的前 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

参见 SQL Fiddle with Demo

但是如果你想按年份限制,你可以添加一个 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/

相关文章:

mysql - 基于组的每个用户的 Yii2 RBAC 多重分配

mysql - 想要保持MySQL中两个表之间的关系

php - 如何防止 PHP/MySQL 站点中的并发用户登录?

mysql - SQL 修剪语法错误

mysql - 更新记录时 AddWithValue 不起作用

mysql - 使用 VS 2008 VB 检测 MySQL 字段中的 zerofill

mysql - 类别和项目 1 个大数组

java - SQL Where 子句不返回任何内容 - 初学者

mysql - 在一个项目中同时使用 Mongodb 和 Mysql

mysql - 选择不同的连接多个表