2012-04-18 15 views
3

誰かが1つのクエリで私を助けることができますか?私は最大の支払いが行われた日にすべての支払いの合計を計算する必要が 表費mysql sum payments

paydate  receiver payment 
2011-05-06  SOLO  3000 
2011-05-08  Walmart 5000 
2011-05-09  McDonalds 400 
2011-05-08  Korona  700 
2011-05-08  Walmart 1000 
2011-05-09  BigZ  1300 

: 私はこのようになりますDBを持っています。 結果は次のようになります。

SELECT payment, paydate FROM expenses WHERE payment=(SELECT max(payment) FROM expenses); 

が、それは私だけの最大の支払いとpaydateを与え、私が必要:

paydate  payment 
2011-05-08 6700 

を私は最大のお支払いとそれのpaydateを見つけることができましたその日の支払いの合計。

+0

mysqlの集計関数についての情報を確認してください.SQLのための練習問題を含む多くのサイトもあります。 http://sql-ex.ru/ – llamerr

+0

'SELECT SUM(入金)sum_paymentとして、sum_payment DESC LIMIT 1 ' –

答えて

1
CREATE TABLE `t` (
`t1` INT(10) NULL DEFAULT NULL, 
`t2` DATE NULL DEFAULT NULL, 
`t3` INT(10) NULL DEFAULT NULL 
) 


INSERT INTO `t` (`t1`, `t2`, `t3`) VALUES 
(1, '2012-04-19', 100), 
(2, '2012-04-18', 200), 
(3, '2012-04-18', 300), 
(4, '2012-04-19', 150); 

とクエリ:

select sum(t3), t2 from t where t2=(select t2 from t where t3 = (select max(t3) from t)) 

結果は私たちに500と2012年4月18日、つまり合計と日付

を与えるか、この点を確認してください。

select t1, sum(t3), t2 from t where t2=(select t2 from t where t3 = (select max(t3) from t)) group by t1 
+0

ありがとうございました。 – Gipsy

7

変更これまでの問合せ:私はSUM機能を使用しました

select sum(payment), paydate 
from expenses 
where paydate=(
    select paydate from expenses 
    where payment = (
    select max(payment) from expenses) 
); 

EDIT:以前の出力は必要ではありませんでした。ここに私が以前使っていたもののsqlfiddleがあります。

+0

あなたは日付を忘れBY paydate ORDER BY GROUP費FROM paydate :paydate' –

+2

BY' GROUP @ daemonfire300別の日に同じ*(そして**最大**)の支払いを受けている受取人が2人以上いるかもしれないので、それは必要ではありません。 – hjpotter92

+2

ええ著者が言う:_私はすべてのお支払いの合計を計算する必要があります** ** _ –

2

を限り私は、他の答えは、同じ最大支払いを持つ複数の日付があることを考慮しなかったことを伝えることができます。私の答えは、すべての可能な回答を返す方法を示しています。

SELECT sum(payment) total_amount, paydate 
FROM expenses 
WHERE paydate in (SELECT paydate 
        From expenses 
        WHERE payment = (Select max(payment) from expenses)) 
group by paydate 
order by total_amount desc 

幸運!