在 WHERE 子句中使用 mysql SUM()

2023-06-02数据库问题
1

本文介绍了在 WHERE 子句中使用 mysql SUM()的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

问题描述

假设我有这张桌子

id | cash 
1    200
2    301
3    101
4    700

并且我想返回第一行,其中所有先前现金的总和大于某个值:

and I want to return the first row in which the sum of all the previous cash is greater than a certain value:

例如,如果我想返回所有先前现金总和大于 500 的第一行,则应返回到第 3 行

So for instance, if I want to return the first row in which the sum of all the previous cash is greater than 500, is should return to row 3

如何使用 mysql 语句执行此操作?

How do I do this using mysql statement?

使用 WHERE SUM(cash) >500不起作用

推荐答案

你只能在 HAVING 子句中使用聚合进行比较:

You can only use aggregates for comparison in the HAVING clause:

GROUP BY ...
  HAVING SUM(cash) > 500

HAVING 子句要求您定义一个 GROUP BY 子句.

The HAVING clause requires you to define a GROUP BY clause.

要获取所有先前现金总和大于某个值的第一行,请使用:

To get the first row where the sum of all the previous cash is greater than a certain value, use:

SELECT y.id, y.cash
  FROM (SELECT t.id,
               t.cash,
               (SELECT SUM(x.cash)
                  FROM TABLE x
                 WHERE x.id <= t.id) AS running_total
         FROM TABLE t
     ORDER BY t.id) y
 WHERE y.running_total > 500
ORDER BY y.id
   LIMIT 1

因为聚合函数出现在子查询中,所以可以在 WHERE 子句中引用它的列别名.

Because the aggregate function occurs in a subquery, the column alias for it can be referenced in the WHERE clause.

这篇关于在 WHERE 子句中使用 mysql SUM()的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

The End

相关推荐

Mysql目录里的ibtmp1文件过大造成磁盘占满的解决办法
ibtmp1是非压缩的innodb临时表的独立表空间,通过innodb_temp_data_file_path参数指定文件的路径,文件名和大小,默认配置为ibtmp1:12M:autoextend,也就是说在文件系统磁盘足够的情况下,这个文件大小是可以无限增长的。 为了避免ibtmp1文件无止境的暴涨导致...
2025-01-02 数据库问题
151

SQL 子句“GROUP BY 1"是什么意思?意思是?
What does SQL clause quot;GROUP BY 1quot; mean?(SQL 子句“GROUP BY 1是什么意思?意思是?)...
2024-04-16 数据库问题
62

MySQL groupwise MAX() 返回意外结果
MySQL groupwise MAX() returns unexpected results(MySQL groupwise MAX() 返回意外结果)...
2024-04-16 数据库问题
13

MySQL SELECT 按组最频繁
MySQL SELECT most frequent by group(MySQL SELECT 按组最频繁)...
2024-04-16 数据库问题
16

为什么 Mysql 的 Group By 和 Oracle 的 Group by 行为不同
Why Mysql#39;s Group By and Oracle#39;s Group by behaviours are different(为什么 Mysql 的 Group By 和 Oracle 的 Group by 行为不同)...
2024-04-16 数据库问题
13

MySQL GROUP BY DateTime +/- 3 秒
MySQL GROUP BY DateTime +/- 3 seconds(MySQL GROUP BY DateTime +/- 3 秒)...
2024-04-16 数据库问题
14