

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Cláusulas compatíveis
<a name="supported-clauses"></a>

A `SELECT` instrução é usada para recuperar dados de uma ou mais visualizações. AWS IoT SiteWise suporta `JOIN` as `INNER JOIN` operações e.

As visualizações são unidas com uma `JOIN` sintaxe explícita ou com notações separadas por vírgula na cláusula. `FROM`

**Example**  
Uma `SELECT` declaração geral:  

```
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**  
Uma declaração SELECT com as 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**  
 Um implícito `JOIN` combina duas ou mais tabelas diferentes sem usar a `JOIN` palavra-chave com base no esquema interno AWS IoT SiteWise do. Isso é o equivalente a executar um `JOIN` nos `property_id` campos `asset_id` e entre metadados e tabelas de dados brutos. Esse padrão SiteWise permite aproveitar qualquer filtro de metadados na consulta, ao buscar tabelas de dados brutos de uma forma que resulta em menos dados gerais escaneados.   

**Example de uma 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'
```
O exemplo acima verifica apenas os dados da propriedade do ativo pertencente aos nomes de metadados especificados.  

**Example de um equivalente menos otimizado da consulta acima:**  

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

Uma explicação de cada cláusula e sua descrição estão listadas abaixo:


|  **Cláusula**  |  **Assinatura**  |  **Descrição**  | 
| --- | --- | --- | 
|  `LIMIT`  |  <pre>LIMIT { count }</pre>  |  Essa cláusula limita o conjunto de resultados ao número especificado de linhas. Você pode usar `LIMIT` com ou sem `OFFSET` cláusulas `ORDER BY` e. `LIMIT`só funciona com números inteiros não negativos de [0,2147483647].  | 
|  `ORDER BY`  |  <pre>ORDER BY expression<br />[ ASC | DESC ]<br />[ NULLS FIRST | NULLS LAST ] <br /></pre>  |  A `ORDER BY` cláusula classifica o conjunto de resultados de uma consulta.   Ao se referir às colunas selecionadas em uma agregação na `ORDER BY` cláusula, use o índice ordinal da coluna em vez do nome ou 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>  |  A `GROUP BY` cláusula identifica as colunas de agrupamento para a consulta. É usado em conjunto com uma expressão agregada.  | 
|  `HAVING`  |  <pre>HAVING boolean-expression</pre>  |  A `HAVING` cláusula filtra as linhas do grupo criadas pela cláusula GROUP BY.  | 
|  `SUB SELECT`  |  <pre>SELECT column1, column2<br />FROM table1<br />WHERE column3 IN (SELECT column4 FROM table2);<br /></pre>  |  Uma `SELECT` declaração incorporada em outra `SELECT` declaração.  | 
|  `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` retorna todas as linhas de ambas as tabelas que correspondem à condição de junção.  | 
|  `UNION`  |  <pre>query<br />   { UNION [ ALL ] }<br />another_query<br /></pre>  |  O `UNION` operador calcula a união do conjunto de seus dois argumentos, removendo automaticamente registros duplicados do conjunto de resultados.  | 