Freigeben über


Aggregatfunktionen – min

Gilt für: SQL Server

Gibt aus einer Abfolge von Atomwerten zurück, $arg, dem ein Element, dessen Wert kleiner als die aller anderen Ist.

Syntax

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

Argumente

$arg
Sequenz der Elemente, aus denen der Mindestwert zurückgegeben wird.

Hinweise

Alle Typen der atomisierten Werte, die an min() übergeben werden, müssen Untertypen desselben Basistyps sein. Basistypen, die akzeptiert werden, sind die Typen, die den Gt-Vorgang unterstützen. Diese Typen sind z. B. die drei integrierten numerischen Basistypen, die date/time-Basistypen, xs:string, xs:boolean und xdt:untypedAtomic. Werte des Typs xdt:untypedAtomic werden in xs:double umgewandelt. Wenn eine Mischung dieser Typen vorliegt oder andere Werte anderer Typen übergeben werden, wird ein statischer Fehler ausgelöst.

Das Ergebnis von min() empfängt den Basistyp der übergebenen Typen, z. B. "xs:double" im Fall von "xdt:untypedAtomic". Wenn die Eingabe statisch leer ist, wird dies angegeben und ein statischer Fehler zurückgegeben.

Die Min() -Funktion gibt den einen Wert in der Sequenz zurück, der kleiner als jede andere in der Eingabesequenz ist. Für xs:string-Werte wird die Unicode-Codepunkt-Standardsortierung verwendet. Wenn ein xdt:untypedAtomic-Wert nicht in xs:double umgewandelt werden kann, wird der Wert in der Eingabesequenz ignoriert, $arg. Wenn die Eingabe eine dynamisch berechnete leere Sequenz ist, wird die leere Sequenz zurückgegeben.

Beispiele

Dieses Thema enthält XQuery-Beispiele für XML-Instanzen, die in verschiedenen XML-Typspalten in der AdventureWorks-Datenbank gespeichert sind.

A. Verwenden der min()-Funktion von XQuery zum Bestimmen der Arbeitsplatzstandorte, die die wenigsten Arbeitsstunden aufweisen

Die folgende Abfrage ruft alle Arbeitsplatzstandorte im Fertigungsprozess für das Produktmodell (ProductModelID=7) ab, die die wenigsten Arbeitsstunden aufweisen. Im Allgemeinen wird, wie im folgenden Beispiel gezeigt, ein einziger Arbeitsplatzstandort zurückgegeben. Wenn mehrere Standorte eine gleiche Anzahl von Mindestarbeitsstunden aufweisen, werden alle diese Standorte zurückgegeben.

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  

Beachten Sie hinsichtlich der vorherigen Abfrage Folgendes:

  • Das Namespace-Schlüsselwort im XQuery-Prolog definiert ein Namespacepräfix. Dieses Präfix wird anschließend im XQuery-Abfragetext verwendet.

Der XQuery-Text erstellt den XML-Code mit einem <Location-Element> mit WCID- und LaborHrs-Attributen .

  • Die Abfrage ruft außerdem die ProductModelID- und Namenswerte ab.

Dies ist das Ergebnis:

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

Implementierungseinschränkungen

Die folgenden Einschränkungen sind zu beachten:

  • Die Min() -Funktion ordnet alle ganzzahligen Zahlen xs:decimal zu.

  • Die Min()-Funktion für Werte vom Typ "xs:duration" wird nicht unterstützt.

  • Sequenzen, die Typen über Basistypbegrenzungen hinweg mischen, werden nicht unterstützt.

  • Die Option syntactic, die eine Sortierung bereitstellt, wird nicht unterstützt.

Weitere Informationen

XQuery Functions against the xml Data Type (XQuery-Funktionen für den xml-Datentyp)