Partilhar via


Funções agregadas - min

Aplica-se a:SQL Server

Devolve de uma sequência de valores atómicos, $arg, o único item cujo valor é inferior ao de todos os outros.

Sintaxe

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

Argumentos

$arg
Sequência de itens dos quais retornar o valor mínimo.

Comentários

Todos os tipos dos valores atomizados que são passados para min() devem ser subtipos do mesmo tipo base. Os tipos de base aceites são os tipos que suportam a operação gt. Esses tipos incluem os três tipos de base numérica internos, os tipos de base de data/hora, xs:string, xs:booleano e xdt:untypedAtomic. Os valores do tipo xdt:untypedAtomic são convertidos em xs:double. Se houver uma mistura desses tipos, ou se outros valores de outros tipos forem passados, um erro estático será gerado.

O resultado de min() recebe o tipo base dos tipos passados, como xs:double no caso de xdt:untypedAtomic. Se a entrada estiver estaticamente vazia, vazio será implícito e um erro estático será retornado.

A função min() retorna um valor na sequência que é menor do que qualquer outro na sequência de entrada. Para valores xs:string, o Agrupamento de Codepoint Unicode padrão está sendo usado. Se um valor xdt:untypedAtomic não puder ser convertido em xs:double, o valor será ignorado na sequência de entrada, $arg. Se a entrada for uma sequência vazia calculada dinamicamente, a sequência vazia será retornada.

Exemplos

Este tópico fornece exemplos de XQuery em instâncias XML armazenadas em várias colunas xml type no banco de dados AdventureWorks.

Um. Usando a função min() XQuery para encontrar o local do centro de trabalho que tem o menor número de horas de trabalho

A consulta a seguir recupera todos os locais do centro de trabalho no processo de fabricação do modelo de produto (ProductModelID=7) que têm o menor número de horas de trabalho. Geralmente, como mostrado a seguir, um único local é retornado. Se vários locais tivessem um número igual de horas mínimas de trabalho, todos seriam devolvidos.

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  

Observe o seguinte da consulta anterior:

  • O namespace palavra-chave no prólogo XQuery define um prefixo de namespace. Este prefixo é então usado no corpo XQuery.

O corpo XQuery constrói o XML que tem um elemento <Location> com atributos WCID e LaborHrs.

  • A consulta também recupera os valores ProductModelID e name.

Este é o resultado:

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

Limitações de implementação

Estas são as limitações:

  • A função min() mapeia todos os inteiros para xs:decimal.

  • A função min() em valores do tipo xs:duration não é suportada.

  • Não há suporte para sequências que misturam tipos entre limites de tipo base.

  • A opção sintática que fornece um agrupamento não é suportada.

Ver também

funções XQuery em relação ao tipo de dados xml