Aggregatfunktionen – min

Gilt für:SQL Server

Gibt aus einer Sequenz von atomaren Werten $arg das eine Element zurück, dessen Wert kleiner als der 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.

Bemerkungen

Alle Typen der atomisierten Werte, die an min() übergeben werden, müssen Untertypen desselben Basistyps sein. Akzeptierte Basistypen 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 vorhanden ist 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 jeder 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 ganzen Zahlen xs:decimal zu.

  • Die min()- Funktion für Werte des Typs 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-Funktionen für den xml-Datentyp