【问题标题】:PHP MYSQL SUM Until a row then stopPHP MYSQL SUM 直到一行然后停止
【发布时间】:2013-04-20 06:57:17
【问题描述】:

基本上,我正在创建一种支票账户类型查询。 除了我想把它分成几页之外,这相当容易。

所以我有一个名为amount 的字段,它可以是正数或负数。

问题是,如果我在记录 75-100 上,我需要查询所有 amount 的总和,直到记录 75 并给我总数。 然后我可以对记录 75-100 运行我的查询,并像这样遍历它们的数量: (假设 74 和包括 74 的总和为 500 美元)

record#    Amount    Total
75         25.00     525.00
76         35.00     560.00
77         40.00     600.00

etc.

我当时的想法是获取记录 75 的 idnum 并总结,直到找到它: SUM(idnum != $until 然后amount else 0 end)

然而,这只是继续。它不会停在 75 它只是跳过 75 然后求和 76、77 等。 任何帮助将不胜感激。

【问题讨论】:

  • 每个帐户的record 是否总是按顺序排列,还是顺序中可能存在间隙?
  • SELECT SUM(amount) AS amt FROM table ..... 其余查询
  • 您要获取 1 到 75 的 id 总和还是 75 条记录的总和?
  • 您好,Joachim 序列中会有间隙。朋克,这只会让我得到整个 SUM,但它没有抓住重点。Yadav,如果我理解你的话,它是 1-75 的总和,其中 WHERE 只会挑选出某些人。

标签: php mysql sum case


【解决方案1】:
SET @total=0;
SELECT
     recordno, 
     amount,    
     @total:= @total+ amount AS total
FROM table1 
LIMIT 75, 75

SELECT 
      cur.id, cur.amount, sum(prev.amount)
FROM table1 cur
left join table1 prev
    on cur.id >= prev.id
group by cur.id 
LIMIT 75, 75

这里限制函数从76条开始记录到另外75条记录,你可以把这个作为参数发送

【讨论】:

  • 如何以及在哪里添加:WHERE group = '35'
  • 您的表中有名为 group 的列吗?您是否尝试使用上述解决方案编写 where 子句?
  • 是的,有一个名为 group 的列。我在哪里添加到哪里?谢谢
  • 哦,我想通了,它需要有 cur.group = '35'
  • 很抱歉再次打扰您,我决定将上面的第一个选项与@​​987654324@ 一起使用,但这会导致我的循环问题。这是我的实际代码“$result2 = mysql_query("SET @total=0; SELECT *, @total:= @total+ companyearned` AS total FROM recordedhours WHERE group = '$uid' ORDER BY unixdate DESC, idnum DESC LIMIT $from, $max_results"); while ($rowb = mysql_fetch_array($result2)) { //do stuff }` 但我得到了错误:Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-02
  • 1970-01-01
相关资源
最近更新 更多