

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Clausole supportate
<a name="supported-clauses"></a>

L'`SELECT`istruzione viene utilizzata per recuperare dati da una o più viste. AWS IoT SiteWise supporta le `INNER JOIN` operazioni `JOIN` e.

Le viste vengono unite con una `JOIN` sintassi esplicita o con notazioni separate da virgole nella clausola. `FROM`

**Example**  
Una dichiarazione generale: `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**  
Un'istruzione SELECT con le diverse clausole:  

```
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;
```

**Nota**  
 Un'implicita `JOIN` combina due o più tabelle diverse senza utilizzare la `JOIN` parola chiave basata sullo schema interno AWS IoT SiteWise. Ciò equivale a eseguire un comando `JOIN` sui `property_id` campi `asset_id` e tra metadati e tabelle di dati non elaborati. Questo modello consente di SiteWise sfruttare qualsiasi filtro di metadati specificato nella query, durante il recupero da tabelle di dati non elaborati in modo da ridurre la quantità complessiva di dati analizzati.   

**Example di una query:**  

```
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'
```
L'esempio precedente analizza solo i dati della proprietà dell'asset che appartiene ai nomi dei metadati specificati.  

**Example di un equivalente meno ottimizzato della query precedente:**  

```
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'
```

Di seguito è riportata una spiegazione di ciascuna clausola e la relativa descrizione:


|  **Clausola**  |  **Firma**  |  **Descrizione**  | 
| --- | --- | --- | 
|  `LIMIT`  |  <pre>LIMIT { count }</pre>  |  Questa clausola limita il set di risultati al numero di righe specificato. È possibile utilizzare `LIMIT` con o senza `OFFSET` clausole `ORDER BY` and. `LIMIT`funziona solo con numeri interi non negativi compresi tra [0,2147483647].  | 
|  `ORDER BY`  |  <pre>ORDER BY expression<br />[ ASC | DESC ]<br />[ NULLS FIRST | NULLS LAST ] <br /></pre>  |  La `ORDER BY` clausola ordina il set di risultati di una query.   Quando si fa riferimento a colonne selezionate in un'aggregazione nella `ORDER BY` clausola, utilizzate l'indice ordinale della colonna anziché il nome o l'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>  |  La `GROUP BY` clausola identifica le colonne di raggruppamento per la query. Viene utilizzata insieme a un'espressione aggregata.  | 
|  `HAVING`  |  <pre>HAVING boolean-expression</pre>  |  La `HAVING` clausola filtra le righe di gruppo create dalla clausola GROUP BY.  | 
|  `SUB SELECT`  |  <pre>SELECT column1, column2<br />FROM table1<br />WHERE column3 IN (SELECT column4 FROM table2);<br /></pre>  |  Un'`SELECT`istruzione incorporata in un'altra `SELECT` istruzione.  | 
|  `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` restituisce tutte le righe di entrambe le tabelle che soddisfano la condizione di join.  | 
|  `UNION`  |  <pre>query<br />   { UNION [ ALL ] }<br />another_query<br /></pre>  |  L'`UNION`operatore calcola l'unione di set dei suoi due argomenti, rimuovendo automaticamente i record duplicati dal set di risultati.  | 