【问题标题】:mysql sum paymentsmysql总付款
【发布时间】:2012-04-18 11:43:59
【问题描述】:

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

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

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

【问题讨论】:

  • 查看mysql聚合函数的信息,也有很多网站有sql练习,例如sql-ex.ru
  • SELECT SUM(payment) as sum_payment, paydate FROM expenses GROUP BY paydate ORDER BY sum_payment DESC LIMIT 1

标签: mysql


【解决方案1】:

将查询更改为:

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

我在哪里使用了SUM 函数。

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

【讨论】:

  • 你忘记了日期:GROUP BY paydate
  • @daemonfire300 我没有这个必要,因为可能有两个或多个接收者在接收 same(和 max)付款不同的日子。
  • 是的,但作者说:我必须计算当天所有付款的总和
  • 不,它给了我相同的输出,只是支付双倍
  • 您是否尝试过执行您的查询?这是错误的,它给了我们 5000 作为总和而不是 5000+1000(+700?),其他已经删除的答案是正确的
【解决方案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

祝你好运!

【讨论】:

    【解决方案3】:
    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-11-03
      • 2013-07-25
      • 2012-09-29
      • 2021-11-12
      • 2021-12-28
      • 1970-01-01
      • 2015-07-01
      • 1970-01-01
      相关资源
      最近更新 更多