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)