Partilhar via


Funções de Agregação – min

Aplica-se: SQL Server

Retorna de uma sequência de valores atômicos, $arg, aquele item cujo valor é menor que o 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 de valores atomizados que são passados para min() devem ser subtipos do mesmo tipo base. Os tipos base aceitos são os tipos que dão suporte à operação gt . Esses tipos incluem os três tipos base numéricos internos, os tipos base de data/hora, xs:string, xs:boolean e xdt:untypedAtomic. 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, será gerado um erro estático.

O resultado de min() recebe o tipo base do tipo passado em tipos, como xs:double no caso de xdt:untypedAtomic. Se a entrada estiver estaticamente vazia, o 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, a ordenação de ponto de código Unicode padrão está sendo usada. 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 relação a instâncias XML armazenadas em várias colunas de tipo xml no banco de dados AdventureWorks.

R. Usando a função min() XQuery para localizar o local de centro de trabalho com menos horas de trabalho

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

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 na consulta anterior:

  • A palavra-chave namespace no prólogo XQuery define um prefixo de namespace. Esse prefixo é então usado no corpo do 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 nome.

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, atravessando os limites de tipo base.

  • Não há suporte para opção sintática que fornece ordenação.

Confira também

Funções XQuery em Tipos de Dados XML