excel技巧:如何使用dmax函数获取最大值

坦率地说,Excel的DMAX函数可以帮助您根据多种规则从带标签的表中选择符合条件的记录,然后找到特定列的最大值。

我们先来说说最重要的事情。
DMAX的三个参数必须匹配:数据库区必须有标题行,条件区的标题也必须完全匹配,否则直接报错。
我们去年运行了这个项目,但由于状态区域有额外的空间,整个公式运行了一整夜没有结果。
另一点是条件可以组合在多行上。
例如,必须同时满足“部门=A 组”和“月份=一月”。
这两个条件都必须满足。
还有另一个重要的细节。
公式中的字段名称必须用英文双引号引起来,例如“Sales”,或者直接填写列号。
例如,如果Sales是第三列,则填写3
一开始我以为条件字段的填写顺序无所谓,但后来发现是错误的。
标题必须与数据库区域完全匹配。
如果请求错误,那就没用了。
等等,还有一件事。
如果目标列是日期或包含文本的数字,则在计算之前必须将其转换为数值,否则 DMAX 会将其视为文本。

建议条件区域单独绘制一个区域,而不是与数据混合。
以后修改条款会容易得多。

数据库中maxsale的优势

说白了,MAX功能是“maxsale”场景的主键。
它简单、原始且有效。

要成长,它有几个基本方法: 我们先来说说最重要的性能优化。
去年我们跑千万级别的电商订单表时,直接用MAX(sale_amount)来跑毫秒级别的结果,比自己写循环解析表至少快1 0倍。
这是因为数据库直接使用CPU+索引来暴力破解MAX。
还有一点就是灵活的组合。
例如,去年春节促销时,我们通过区域 WHERE sale_date BETWEEN '2 02 3 -01 -01 ' AND '2 02 3 -1 2 -3 1 ' GROUP BY 直接找出全国各个区域的最高销售额。
如果使用过多,这种组合是必不可少的。
还有另一个关键细节。
默认情况下不计算空值的处理。
很多人不重视它。
因此,在统计过程中,包含未填充数据的记录将会被遗漏。
例如,如果订单不包含销售额,则将全额核算。
后来我们发现这是假的。
添加 COALESCE(sale_amount, 0) 可以捕获这些错过的鱼。

我一开始以为跨数据库移植需要修改代码,但最终我直接把MAX(sale_amount)从MySQL移到了Oracle。
数据类型像兄弟一样匹配,真是省心。

注意事项:在分布式数据库中使用 MAX 时,请务必关注分区键排序方法,否则您可能会得到有偏差的结果 - 例如,按订单 ID 分区,然后在计算后比较每个分区。
最终您可能会错过片段之间的极值。

我认为值得尝试使用 EXPLAIN 运行 MAX 几次,看看索引是否使用正确。
这比仅仅观看要好。