

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Cláusulas admitidas
<a name="supported-clauses"></a>

La `SELECT` sentencia se utiliza para recuperar datos de una o más vistas. AWS IoT SiteWise admite las `INNER JOIN` operaciones `JOIN` y.

Las vistas se unen con una `JOIN` sintaxis explícita o con anotaciones separadas por comas en la cláusula. `FROM`

**Example**  
Una declaración general: `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**  
Una declaración SELECT con las diferentes cláusulas:  

```
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**  
 Una implícita `JOIN` combina dos o más tablas diferentes sin usar la `JOIN` palabra clave según AWS IoT SiteWise su esquema interno. Esto equivale a realizar una `JOIN` en los `property_id` campos `asset_id` y entre las tablas de metadatos y de datos sin procesar. Este patrón SiteWise permite aprovechar cualquier filtro de metadatos de la consulta cuando se extraen datos de tablas de datos sin procesar de forma que se escaneen menos datos generales.   

**Example de una consulta:**  

```
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'
```
El ejemplo anterior solo escanea los datos de la propiedad del activo que pertenece a los nombres de metadatos especificados.  

**Example de un equivalente menos optimizado de la consulta anterior:**  

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

A continuación se detalla una explicación de cada cláusula y su descripción:


|  **cláusula**  |  **Signature**  |  **Descripción**  | 
| --- | --- | --- | 
|  `LIMIT`  |  <pre>LIMIT { count }</pre>  |  Esta cláusula limita el conjunto de resultados al número de filas especificado. Puede utilizarla `LIMIT` con o sin `OFFSET` cláusulas `ORDER BY` y. `LIMIT`solo funciona con números enteros no negativos de [0,2147483647].  | 
|  `ORDER BY`  |  <pre>ORDER BY expression<br />[ ASC | DESC ]<br />[ NULLS FIRST | NULLS LAST ] <br /></pre>  |  La `ORDER BY` cláusula ordena el conjunto de resultados de una consulta.   Al hacer referencia a las columnas seleccionadas en una agregación de la `ORDER BY` cláusula, utilice el índice ordinal de la columna en lugar del nombre o el 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` cláusula identifica las columnas de agrupación de la consulta. Se usa junto con una expresión agregada.  | 
|  `HAVING`  |  <pre>HAVING boolean-expression</pre>  |  La `HAVING` cláusula filtra las filas del grupo creadas por la cláusula GROUP BY.  | 
|  `SUB SELECT`  |  <pre>SELECT column1, column2<br />FROM table1<br />WHERE column3 IN (SELECT column4 FROM table2);<br /></pre>  |  Una `SELECT` declaración incrustada dentro de otra `SELECT` declaración.  | 
|  `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` devuelve todas las filas de ambas tablas que coincidan con la condición de unión.  | 
|  `UNION`  |  <pre>query<br />   { UNION [ ALL ] }<br />another_query<br /></pre>  |  El `UNION` operador calcula la unión de conjuntos de sus dos argumentos y elimina automáticamente los registros duplicados del conjunto de resultados.  | 