3

誰かが1つのクエリで私を助けることができますか? 私は次のようなDBを持っています: テーブル費用

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

最大支払いが行われた日のすべての支払いの合計を計算する必要があります。結果は次のようになります。

paydate       payment
2011-05-08    6700

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

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

しかし、それは私に最大の支払いと支払い日を与えるだけであり、その日の支払いの合計が必要です.

4

3 に答える 3

7

クエリを次のように変更します。

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

SUM関数を使用した場所。

EDIT : 以前の出力は必要なものではありませんでした。これは、以前と現在使用しているもののsqlfiddleです。

于 2012-04-18T11:47:23.313 に答える
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

幸運を!

于 2012-06-17T07:48:24.997 に答える
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-04-18、つまり合計と日付になります。

またはこれを確認してください:

select t1, sum(t3), t2 from t  where t2=(select t2 from t where t3 = (select max(t3) from t)) group by t1
于 2012-04-18T12:02:59.887 に答える