Sdílet prostřednictvím


Agregační funkce – min

platí pro:SQL Server

Vrátí ze sekvence atomických hodnot , $arg, jednu položku, jejíž hodnota je menší než u všech ostatních.

Syntaxe

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

Arguments

$arg
Posloupnost položek, ze kterých se má vrátit minimální hodnota

Poznámky

Všechny typy atomizovaných hodnot, které se předávají min (), musí být podtypy stejného základního typu. Základní typy, které jsou přijímány, jsou typy, které podporují operaci gt . Mezi tyto typy patří tři předdefinované číselné základní typy, základní typy data a času, xs:string, xs:boolean a xdt:untypedAtomic. Hodnoty typu xdt:untypedAtomic se přetypují na xs:double. Pokud existuje kombinace těchto typů nebo pokud jsou předány jiné hodnoty jiných typů, vyvolá se statická chyba.

Výsledkem min() je základní typ předaných v typech, například xs:double v případě xdt:untypedAtomic. Pokud je vstup staticky prázdný, je implicitní prázdný a vrátí se statická chyba.

Funkce min() vrátí jednu hodnotu v posloupnosti, která je menší než jakákoli jiná ve vstupní sekvenci. Pro hodnoty xs:string se používá výchozí kolace kódu Unicode. Pokud xdt:untypedAtomic hodnotu nelze přetypovat na xs:double, hodnota se ignoruje ve vstupní sekvenci $arg. Pokud je vstup dynamicky počítanou prázdnou sekvencí, vrátí se prázdná sekvence.

Examples

Toto téma obsahuje příklady XQuery pro instance XML, které jsou uloženy v různých sloupcích typu XML v databázi AdventureWorks.

A. Použití funkce min() XQuery k vyhledání umístění pracovního centra, které má nejmenší pracovní dobu

Následující dotaz načte všechna umístění pracovních center ve výrobním procesu modelu produktu (ProductModelID=7), které mají nejmenší pracovní dobu. Obecně platí, že se vrátí jedno umístění, jak je znázorněno na následujícím obrázku. Pokud by více míst mělo stejný počet minimálních pracovních hodin, všechny by se vrátily.

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  

Všimněte si následujících věcí z předchozího dotazu:

  • Klíčové slovo oboru názvů v XQuery prolog definuje předponu oboru názvů. Tato předpona se pak použije v těle XQuery.

Tělo XQuery vytvoří XML, který má <location> element s WCID a LaborHrs atributy.

  • Dotaz také načte hodnoty ProductModelID a name.

Toto je výsledek:

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

Omezení implementace

Toto jsou omezení:

  • Funkce min() mapuje všechna celá čísla na xs:decimal.

  • Funkce min() pro hodnoty typu xs:duration není podporována.

  • Sekvence, které kombinují typy napříč hranicemi základního typu, se nepodporují.

  • Syntaktická možnost, která poskytuje kolaci, není podporována.

Viz také

Funkce XQuery proti datovému typu XML