

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Unterstützte Klauseln
<a name="supported-clauses"></a>

Die `SELECT` Anweisung wird verwendet, um Daten aus einer oder mehreren Ansichten abzurufen. AWS IoT SiteWise unterstützt die `INNER JOIN` Operationen `JOIN` und.

Ansichten werden mit einer expliziten `JOIN` Syntax oder mit durch Kommas getrennten Notationen in der Klausel verknüpft. `FROM`

**Example**  
Eine allgemeine Aussage: `SELECT`  

```
SELECT expression [, ...]
  [ FROM table_name AS alias [, ...] ]
  [ WHERE condition ]
  [ GROUP BY expression [, ...] ]
  [ HAVING condition ]
  [ ORDER BY expression [ ASC | DESC ] [ NULLS FIRST | NULLS LAST ] [, ...] ]
  [ LIMIT expression ]
```

**Example**  
Eine SELECT-Anweisung mit den verschiedenen Klauseln:  

```
SELECT
  a.asset_name,
  a.asset_id,
  p.property_type,
  p.property_data_type,
  p.string_attribute_value,
  p.property_name
FROM asset a, asset_property p
WHERE a.asset_description LIKE '%description%'
AND p.property_type IN ('attribute', 'metric')
OR p.property_id IN (
  SELECT property_id
  FROM raw_time_series
  WHERE event_timestamp BETWEEN TIMESTAMP '2025-01-01 00:00:00' AND TIMESTAMP '2025-01-02 00:00:00'
  GROUP BY asset_id, property_id
  HAVING COUNT(*) > 100
 )
GROUP BY p.property_type
HAVING COUNT(*) > 5
ORDER BY a.asset_name ASC
LIMIT 20;
```

**Anmerkung**  
 Eine implizite Methode `JOIN` kombiniert zwei oder mehr verschiedene Tabellen, ohne das auf AWS IoT SiteWise dem internen Schema basierende `JOIN` Schlüsselwort zu verwenden. Dies entspricht der Ausführung von A `JOIN` für die `property_id` Felder `asset_id` und zwischen Metadaten- und Rohdatentabellen. Dieses Muster SiteWise ermöglicht es, beliebige Metadatenfilter in der Abfrage beim Abrufen aus Rohdatentabellen so zu nutzen, dass insgesamt weniger Daten gescannt werden.   

**Example einer Abfrage:**  

```
SELECT a.asset_name, p.property_name, r.event_timestamp
FROM asset a, asset_property p, raw_time_series r
WHERE a.asset_name='my_asset' AND p.property_name='my_property'
```
Im obigen Beispiel werden nur Daten aus der Asset-Eigenschaft gescannt, die zu den angegebenen Metadatennamen gehören.  

**Example eines weniger optimierten Äquivalents der obigen Abfrage:**  

```
SELECT a.asset_name, p.property_name, r.event_timestamp
FROM asset a
JOIN asset_property p ON a.asset_id=p.asset_id
JOIN raw_time_series r ON p.asset_id=r.asset_id AND p.property_id=r.property_id
WHERE a.asset_name='my_asset' AND p.property_name='my_property'
```

Eine Erläuterung der einzelnen Klauseln und ihrer Beschreibung ist unten aufgeführt:


|  **Klausel**  |  **Signature**  |  **Beschreibung**  | 
| --- | --- | --- | 
|  `LIMIT`  |  <pre>LIMIT { count }</pre>  |  Diese Klausel begrenzt die Ergebnismenge auf die angegebene Anzahl von Zeilen. Sie können `LIMIT` mit oder ohne `ORDER BY` `OFFSET` UND-Klauseln verwenden. `LIMIT`funktioniert nur mit nicht negativen Ganzzahlen ab [0,2147483647].  | 
|  `ORDER BY`  |  <pre>ORDER BY expression<br />[ ASC | DESC ]<br />[ NULLS FIRST | NULLS LAST ] <br /></pre>  |  Die `ORDER BY` Klausel sortiert die Ergebnismenge einer Abfrage.   Wenn Sie in der `ORDER BY` Klausel auf ausgewählte Spalten in einer Aggregation verweisen, verwenden Sie den Ordinalindex der Spalte und nicht den Namen oder Alias.  <pre>SELECT AVG(t.double_value)<br />FROM latest_value_time_series t<br />GROUP BY t.asset_id<br />ORDER BY 1</pre>   | 
|  `GROUP BY`  |  <pre>GROUP BY expression [, ...]</pre>  |  Die `GROUP BY` Klausel identifiziert die Gruppierungsspalten für die Abfrage. Sie wird in Verbindung mit einem Aggregatausdruck verwendet.  | 
|  `HAVING`  |  <pre>HAVING boolean-expression</pre>  |  Die `HAVING` Klausel filtert Gruppenzeilen, die durch die GROUP BY-Klausel erstellt wurden.  | 
|  `SUB SELECT`  |  <pre>SELECT column1, column2<br />FROM table1<br />WHERE column3 IN (SELECT column4 FROM table2);<br /></pre>  |  Eine `SELECT` Anweisung, die in eine andere `SELECT` Anweisung eingebettet ist.  | 
|  `JOIN`  |  <pre>SELECT column1, column2<br />FROM table1 JOIN table2<br />ON table1.column1 = table2.column1;<br /></pre>  | 
|  `INNER JOIN`  |  <pre>SELECT columns<br />FROM table1<br />INNER JOIN table2 ON table1.column = table2.column;<br /></pre>  |  An `INNER JOIN` gibt alle Zeilen aus beiden Tabellen zurück, die der Join-Bedingung entsprechen.  | 
|  `UNION`  |  <pre>query<br />   { UNION [ ALL ] }<br />another_query<br /></pre>  |  Der `UNION` Operator berechnet die Mengenvereinigung seiner beiden Argumente und entfernt automatisch doppelte Datensätze aus der Ergebnismenge.  | 