mysql里面什么是聚合函数?

说白了,这些收集功能就是数据库的“算盘”,可以帮助你快速收集信息,但如果使用不好,也很容易给你带来麻烦。

要扩展,首先使用 count() 计算总行数。
例如,去年我们运行用户行为报告时,SELECT COUNT() from user_action 直接返回了 1 00 万步,但如果使用 COUNT(user_id),则 null id 会被忽略,结果可能会少于 1 0,000 行 - 这在去年排序数据时几乎卡住了。
此外,SUM() 和 AVG() 最重要的是它们处理空值。
例如,对于销售表中没有数量的订单,SUM(amount)会直接报错,需要在流程中添加SUM(COALESCE(amount, 0))。
还有另一个重要的细节。
之前必须使用 GROUP BY AVG()。
例如,按城市的平均客户价格,SELECT city, AVG(amount) FROM order GROUP BY city。
如果顺序颠倒,计算就会不正确。

起初我以为 MAX() 和 MIN() 正在搜索不同的列,但后来我意识到它们做的事情完全相同 - 查找最大值和最小值。
例如,要检查库存最低的商品,请仅从产品中选择 MIN(stock)。
等等,还有一件事。
这些功能不能直接与AS集成。
您必须添加 AS 别名。
去年有同事写了 SELECT COUNT() AS 'total number of rows' 作为总行数,直接报错。
说实话,这很尴尬。

最后提醒:当你的表有千万行时,不要傻了,按列从表中进行选择。
首先,使用EXPLAIN查看执行计划。
您可能需要使用窗口函数。

闲话Mysql之sum() over()与sum() group by 有啥不同~

上周我告诉你 sumover 和 sumgroupby 之间的区别。

编译:
按列分组。

每组一行。

例如:按“组织”分组。

结果是行数减少了。

我于 2 02 3 年 3 月 1 0 日演示了这一点。

例如,按组织选择组织、测试组的总计(金额)。

总结:
也按列分组。

但是每一行都被保留。

结果中的行数不会改变。

添加新列以显示组中的摘要。

我的朋友用它来做报告。

例如:从测试中选择组织、金额、总计(金额)(除以组织)。

层次结构:
sumgroupby:无层次分组后的结果。

sumover:可以分组排序。

我上次忘记提到这一点了。

例如,按“状态”排序然后累加。

场景:
sumgroupby:仅查看总体结果。

sumover:查看组中每行的总计。

例如:分析当月销售人员的排名。

这非常重要。

算了。