聚合函数 - min

适用于:SQL Server

从原子值序列 返回,$arg,一个项的值小于所有其他项的值。

语法

  
fn:min($arg as xdt:anyAtomicType*) as xdt:anyAtomicType?  

自变量

$arg
要返回其最小值的一组数值。

备注

传递给 min () 的所有原子化值类型都必须是同一基类型的子类型。 接受的基本类型是支持 gt 操作的类型。 这些类型包括三种内置数值基类型、日期/时间基类型、xs:string、xs:boolean 和 xdt:untypedAtomic。 类型为 xdt:untypedAtomic 的值将转换为 xs:double。 如果混合了这些类型,或者传递了其他类型的其他值,则会引发静态错误。

min () 的结果接收传入类型的 基类型,例如 xdt:untypedAtomic 时为 xs:double。 如果输入静态为空,则隐含空,并返回静态错误。

min () 函数返回序列中的一个值,该值小于输入序列中的任何值。 对于 xs:string 值,则使用默认的 Unicode 码位排序规则。 如果 xdt:untypedAtomic 值无法强制转换为 xs:double,则会在输入序列中忽略该值, $arg。 如果输入是动态计算的空序列,则返回空序列。

示例

本主题针对存储在 AdventureWorks 数据库中各种 xml 类型列中的 XML 实例提供 XQuery 示例。

A. 使用 min() XQuery 函数查找工时最少的生产车间

下面的查询检索产品型号 (ProductModelID=7) 生产过程中工时最少的所有生产车间。 通常返回单个位置,如下所示。 如果多个车间具有相同的最少工时数,则将它们全部返回。

select ProductModelID, Name, Instructions.query('  
  declare namespace AWMI=  
    "https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelManuInstructions";  
  for   $Location in /AWMI:root/AWMI:Location  
  where $Location/@LaborHours =  
          min( /AWMI:root/AWMI:Location/@LaborHours )  
return  
  <Location WCID=     "{ $Location/@LocationID }"   
              LaborHrs= "{ $Location/@LaborHours }" />  
  ') as Result   
FROM  Production.ProductModel  
WHERE ProductModelID=7  

请注意上述查询的以下方面:

  • XQuery prolog 中的 namespace 关键字定义命名空间前缀。 然后,将此前缀用于 XQuery 主体中。

XQuery 正文构造具有<具有 WCID 和 LaborHrs 属性的 Location> 元素的 XML。

  • 该查询也检索 ProductModelID 和名称值。

结果如下:

ProductModelID   Name              Result  
---------------  ----------------  ---------------------------------  
7                HL Touring Frame  <Location WCID="45" LaborHrs="0.5"/>   

实现限制

限制如下:

  • min () 函数将所有整数映射到 xs:decimal。

  • 不支持对类型为 xs:duration 的值使用 min () 函数。

  • 不支持跨基类型边界混合类型的序列。

  • 不支持提供排序规则的语法选项。

另请参阅

针对 xml 数据类型的 XQuery 函数