

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Clauses prises en charge
<a name="supported-clauses"></a>

L'`SELECT`instruction est utilisée pour récupérer des données à partir d'une ou de plusieurs vues. AWS IoT SiteWise soutient les `INNER JOIN` opérations `JOIN` et.

Les vues sont jointes à l'aide d'une `JOIN` syntaxe explicite ou de notations séparées par des virgules dans la clause. `FROM`

**Example**  
Une `SELECT` déclaration générale :  

```
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**  
Une instruction SELECT avec les différentes clauses :  

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

**Note**  
 Un implicite `JOIN` combine deux ou plusieurs tables différentes sans utiliser le `JOIN` mot clé basé sur AWS IoT SiteWise le schéma interne. Cela revient à exécuter un champ `JOIN` sur les `property_id` champs `asset_id` et entre les métadonnées et les tables de données brutes. Ce modèle permet de SiteWise tirer parti de n'importe quel filtre de métadonnées dans la requête, lors de l'extraction à partir de tables de données brutes, de manière à réduire le volume global des données numérisées.   

**Example d'une requête :**  

```
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'exemple ci-dessus analyse uniquement les données de la propriété de l'actif appartenant aux noms de métadonnées spécifiés.  

**Example d'un équivalent moins optimisé de la requête ci-dessus :**  

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

Vous trouverez ci-dessous une explication de chaque clause et sa description :


|  **Clause**  |  **Signature**  |  **Description**  | 
| --- | --- | --- | 
|  `LIMIT`  |  <pre>LIMIT { count }</pre>  |  Cette clause limite le jeu de résultats au nombre de lignes spécifié. Vous pouvez utiliser `LIMIT` avec ou sans `OFFSET` clauses `ORDER BY` et. `LIMIT`ne fonctionne qu'avec des entiers non négatifs de [0,2147483647].  | 
|  `ORDER BY`  |  <pre>ORDER BY expression<br />[ ASC | DESC ]<br />[ NULLS FIRST | NULLS LAST ] <br /></pre>  |  La `ORDER BY` clause trie le jeu de résultats d'une requête.   Lorsque vous faites référence à des colonnes sélectionnées dans une agrégation dans la `ORDER BY` clause, utilisez l'index ordinal de la colonne plutôt que le nom ou 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` clause identifie les colonnes de regroupement pour la requête. Il est utilisé conjointement avec une expression agrégée.  | 
|  `HAVING`  |  <pre>HAVING boolean-expression</pre>  |  La `HAVING` clause filtre les lignes de groupe créées par la clause GROUP BY.  | 
|  `SUB SELECT`  |  <pre>SELECT column1, column2<br />FROM table1<br />WHERE column3 IN (SELECT column4 FROM table2);<br /></pre>  |  Une `SELECT` déclaration intégrée dans une autre `SELECT` déclaration.  | 
|  `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` renvoie toutes les lignes des deux tables qui correspondent à la condition de jointure.  | 
|  `UNION`  |  <pre>query<br />   { UNION [ ALL ] }<br />another_query<br /></pre>  |  L'`UNION`opérateur calcule l'union de ses deux arguments, en supprimant automatiquement les doublons du jeu de résultats.  | 