首页 > 解决方案 > 当对具有文本数据的列应用聚合函数时,检索到什么逻辑结果......?

问题描述

所以我从数据库的几组表中检索一些值来制作数据集。该数据集的每一列都取决于具有主键的列的值。所以问题就在这里......数据集中有一个包含文本数据的列,这将影响它旁边的列的值。因此,让我们将它们视为col1col2。现在我试图通过使用像 MAX,MIN 这样的聚合函数来获取 col1 的值,它们为我提供了一组主键的正确结果。一段时间后,当主键更改或我将此逻辑应用于具有相同数据库的另一个数据集时,它没有给我正确的值。

我认为它非常适用于具有 2 个值(如 'A' 或 'B' )的列,并且值的时刻数增加 3 并且更多它无法正常工作。有解决方案吗?

标签: sql-serverdatasetmodeling

解决方案


MAX 和 MIN,当应用于文本时,基本上按字母顺序对整个列进行排序(根据列或 db 的排序规则),然后分别取最后一个(最大值)或第一个(最小值)值

作为一种算法,我从来没有遇到过这个问题。无论值的数量如何,它总是正确地选择按字母顺序排列的最新或最早的值,但您应该记住排序规则会影响事物;不同语言的排序方式不同,当查看我的 n 或最大文本时,您应该仔细考虑文化如何对其字母进行排序

还要记住 min 和 max 以及分组操作将行数据混合在一起,因此当它是分组操作的一部分时,您不会保留同一行中的其他数据。如果您想要例如“由 textcolumn1 定义的最新行,加上该行中的所有其他数据”,您可能需要使用row_number() over(order by textcolumn1)然后选择行号输出为 1 的行


推荐阅读