【问题标题】:What does it mean when SQL "Max" has a second (integer) parameter?SQL“Max”有第二个(整数)参数是什么意思?
【发布时间】:2021-08-10 15:01:50
【问题描述】:

我有一个关于 SQLite 查询的问题,我正在使用该查询从 Python 中的 .db 文件中获取数据:

SELECT SUM(MaxSquence) FROM (SELECT MAX(SequenceNum,0) AS MaxSquence FROM attacheddb.Table1 WHERE...

(SequenceNum 通常是一个低值、个位数的整数值)

我的主要困惑不在于查询与我的代码的特定交互,而在于“MAX(SequenceNum, 0)”部分的目的。 SequenceNumInTrack 之后的“0”的目的是什么?它是否创建了某种可以在查询中使用 SUM 关键字进行总结的列表?

【问题讨论】:

  • 查看 max() SQL 函数上的docs

标签: python sql sqlite


【解决方案1】:

在子查询中,MAX 被用作scalar function

多参数 max() 函数返回具有最大值的参数,如果任何参数为 NULL,则返回 NULL。多参数 max() 函数从左到右搜索其参数以查找定义整理函数并将该整理函数用于所有字符串比较的参数。

特别是,对MAX(SequenceNum, 0) 的调用将返回一个大于或等于零的值。

【讨论】:

    【解决方案2】:

    SequenceNumInTrack 通常是低值(个位数)整数值

    如果SequenceNumInTrack 永远不会是负数,这没有意义。

    SQLite 的 MAX(X,Y,..) 标量函数返回其参数的最大值。

    对于MAX(SequenceNum, 0),如果SequenceNum 的值始终为正(或0),则MAX(SequenceNum, 0) 仅相当于SequenceNum
    p>

    另一方面,如果有负值,那么您的代码将使用MAX() 来忽略这些负值,以便为即将到来的SUM() 提供。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-10-05
      • 2011-10-22
      • 1970-01-01
      • 1970-01-01
      • 2011-09-01
      • 1970-01-01
      • 2021-04-06
      • 1970-01-01
      相关资源
      最近更新 更多