2012-12-06 40 views
1

目前我很努力地檢索一段時間內金額支出計算的前10條記錄。選擇按一段時間花費的金額計算的前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 

因此,在短期,這根據2012年的date_addeduser_id的購買量是否最高?

+0

我沒有看到2012年數據..你的意思是2011? – bonCodigo

+0

@bonCodigo對不起,從表中複製隨機數據。我會修復到2012年。 – arma

回答

2

您是否嘗試過這樣的事情,這將返回所有數據的所有年份:

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 
+0

就像我需要,該死的我真的有訂單和團體奮鬥:( – arma

+0

@arma它需要時間和實踐,你會得到它雖然:) – Taryn

+0

感謝sqlfiddle :)有用的工具! – arma

相關問題