3

谁能帮我解决一个问题?我有一个看起来像这样的数据库:表费用

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功能的地方。

编辑:以前的输出不是所需要的。这是我以前和现在使用的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 回答