mysql总和付款

时间:2012-04-18 11:44:00

标签: mysql

任何人都可以通过一个查询帮助我吗? 我有一个看起来像这样的数据库: 表费用

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);

但它只给了我最高付款和最后付款,我需要当天付款的总和。

3 个答案:

答案 0 :(得分:7)

将查询更改为:

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

我使用了SUM函数。

编辑:以前的输出不是所需的。这是我以前和现在使用的sqlfiddle

答案 1 :(得分: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

祝你好运!

答案 2 :(得分: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
相关问题