

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` and.

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 in base AWS IoT SiteWise allo schema interno. Ciò equivale a eseguire un campo `JOIN` sui `property_id` campi `asset_id` e tra le tabelle di metadati e di dati grezzi. Questo modello consente di SiteWise sfruttare qualsiasi filtro di metadati fornito nella query, per il recupero da tabelle di dati grezzi in modo da ridurre il numero complessivo di dati scansionati.   

**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 appartenenti ai nomi di 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 della relativa descrizione:


|  **Clausola **  |  **Firma**  |  **Descrizione**  | 
| --- | --- | --- | 
| `LIMIT` |  <pre>LIMIT { count }</pre>  | Questa clausola limita il set di risultati al numero di righe specificato. È possibile utilizzare `OFFSET` clausole `LIMIT` con o senza `ORDER BY` e.<br />`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 della `ORDER BY` clausola, utilizzare 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 l'interrogazione. 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 corrispondono alla condizione di join. | 
| `UNION` |  <pre>query<br />   { UNION [ ALL ] }<br />another_query<br /></pre>  | L'`UNION`operatore calcola l'unione del set dei suoi due argomenti, rimuovendo automaticamente i record duplicati dal set di risultati. | 