

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 지원 절
<a name="supported-clauses"></a>

`SELECT` 문은 하나 이상의 뷰에서 데이터를 검색하는 데 사용됩니다.는 `JOIN` 및 `INNER JOIN` 작업을 AWS IoT SiteWise 지원합니다.

뷰는 명시적 `JOIN` 구문 또는 `FROM` 절의 쉼표로 구분된 표기법으로 조인됩니다.

**Example**  
일반 `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**  
서로 다른 절이 있는 SELECT 문:  

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

**참고**  
 암시적는 AWS IoT SiteWise내부 스키마를 기반으로 하는 `JOIN` 키워드를 사용하지 않고 두 개 이상의 서로 다른 테이블을 `JOIN` 결합합니다. 이는 메타데이터와 원시 데이터 테이블 간의 `asset_id` 및 `property_id` 필드에 `JOIN` 대해를 수행하는 것과 동일합니다. 이 패턴을 사용하면 SiteWise가 원시 데이터 테이블에서 가져올 때 쿼리에서 지정된 메타데이터 필터를 활용하여 전체 데이터가 스캔되는 것을 줄일 수 있습니다.  

**Example 쿼리의 :**  

```
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'
```
위 예제에서는 지정된 메타데이터 이름에 속하는 자산 속성의 데이터만 스캔합니다.  

**Example 위의 쿼리와 동일하게 최적화되지 않은의 경우:**  

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

각 절과 그 설명에 대한 설명은 다음과 같습니다.


|  **절**  |  **Signature**  |  **설명**  | 
| --- | --- | --- | 
|  `LIMIT`  |  <pre>LIMIT { count }</pre>  |  이 절은 결과 집합을 지정된 행 수로 제한합니다. `ORDER BY` 및 `OFFSET` 절과 `LIMIT` 함께 또는 없이를 사용할 수 있습니다. `LIMIT`는 [0,2147483647]의 음수가 아닌 정수에서만 작동합니다.  | 
|  `ORDER BY`  |  <pre>ORDER BY expression<br />[ ASC | DESC ]<br />[ NULLS FIRST | NULLS LAST ] <br /></pre>  |  `ORDER BY` 절은 쿼리의 결과 집합을 정렬합니다.   `ORDER BY` 절의 집계에서 선택한 열을 참조할 때는 이름이나 별칭 대신 열의 서수 인덱스를 사용합니다. <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>  |  `GROUP BY` 절은 쿼리의 그룹화 열을 식별합니다. 집계 표현식과 함께 사용됩니다.  | 
|  `HAVING`  |  <pre>HAVING boolean-expression</pre>  |  `HAVING` 절은 GROUP BY 절에서 생성한 그룹 행을 필터링합니다.  | 
|  `SUB SELECT`  |  <pre>SELECT column1, column2<br />FROM table1<br />WHERE column3 IN (SELECT column4 FROM table2);<br /></pre>  |  다른 `SELECT` 문에 포함된 `SELECT` 문입니다.  | 
|  `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>  |  는 조인 조건과 일치하는 두 테이블의 모든 행을 `INNER JOIN` 반환합니다.  | 
|  `UNION`  |  <pre>query<br />   { UNION [ ALL ] }<br />another_query<br /></pre>  |  `UNION` 연산자는 두 인수의 집합 조합을 계산하여 결과 집합에서 중복 레코드를 자동으로 제거합니다.  | 