# 조회된 데이터를 연산

## 함수의 활용

DeepSearch 의 검색 결과를 다양하게 분석할 수 있도록 아래와 같은 함수를 지원합니다.

{% hint style="info" %}
4칙연산(+,-,\*,/), Max(), Min(), Abs(), Select(), Mean(), Top(), Bottom(), Sum(), Rank(), Sort()
{% endhint %}

### 4칙연산

DeepSearch 의 입력 쿼리는 4칙 연산 및 () 를 지원합니다. 함수와 4칙 연산, ()를 통하여 보다 복잡한 형태의 쿼리를 수행할 수 있습니다.

```
(1+1)*17/32
```

사칙연산을 이용하여 영업이익을 매출로 나누어 영업이익률을 계산할 수도 있고, 직전연도 매출 대비 2배이상 상승한 기업 리스트 등을 조회할 수 있습니다.

```
영업이익 / 매출 > 0.2 : 영업이익률이 20%를 초과하는 기업리스트를 조회합니다. 
2020 매출 > 2019 매출 * 2 : 2020년 매출이 2019년 매출대비 2배이상 상승한 기업리스트를 조회합니다.
```

### Max(), Min()

입력 쿼리 결과값의 최대값 혹은 최소값을 계산합니다.

```
Max(삼성전자 매출액 2010-2018) : 삼성전자의 2010-2018 매출액 중 최대값을 리턴합니다.
Min(LG전자 영업이익 2010-2018) : LG전자의 2010-2018 영업이익 중 최소값을 리턴합니다. 
```

4칙 연산을 함께 활용하여, 최근 삼성전자 매출액의 최대값과 최소값이 어느정도 차이가 나는지 계산해 볼 수 있습니다.

```
Max(삼성전자 매출액 2010-2018)/ Min(삼성전자 매출액 2010-2018
```

### Abs()

입력 쿼리의 결과값을 절대값으로 변환합니다.

예를 들어, 영업손실이 발생하는 기업들의 영업손실값을 절대값으로 전환하여 가져올 수 있습니다.

```
Abs(영업이익 < 0)
```

### Select()

입력 쿼리 결과값이 여러개 일때, 그 중 어떤 결과를 사용할지 지정합니다. 보통 다른 함수와 중첩해서 많이 사용됩니다.

{% hint style="info" %}
Select({입력쿼리}, {선택 순번})

Select({입력쿼리}, \[{선택순번1}, {선택순번2}, ... ,{선택순번N}])
{% endhint %}

{% hint style="info" %}
Select({입력쿼리}, {컬럼명})

Select({입력쿼리}, \[{컬럼명1}, {컬럼명2}, ... , {컬럼명N}]
{% endhint %}

예를 들어, 시가총액이 1000억원 이상인 반도체 사업 기업의 매출액 정보만을 가져올 수 있습니다. 매출액 정보만을 가져오기 위하여, 순번 값에 2를 넣었습니다. ( 0: 사업 기업, 1:시가총액, 2:매출액이 되며, 입력쿼리의 쿼리 순서를 따릅니다. )

```
Select("*반도체*" 사업 기업 and 시가총액 > 100000000000 and 매출액, 2)
```

만약, 시가총액과 매출액을 조회하려면 순번값에 \[1,2]를 넣어서 조회합니다.

```
Select("*반도체*" 사업 기업 and 시가총액 > 100000000000 and 매출액, [1,2])
```

순번이아니라 직접 컬럼명을 입력할 수도 있습니다.&#x20;

```
Select("*반도체*" 사업 기업 and 시가총액 > 100000000000 and 매출액, ["시가총액", "매출액"])
```

![](https://2002947409-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LPJrnQiLiz9bWVBvx6Q%2F-McYJrhfvazdWIMCxMRo%2F-McYKhqHuoKybOZrDszt%2Fimage.png?alt=media\&token=290a9a94-eb5f-4aa9-bafe-dac248d585d0)

###

### Mean()

입력 쿼리의 결과를 평균합니다.&#x20;

삼성전자의 2018년 주가 평균값은 아래와 같습니다.

```
Mean(삼성전자 2018 주가)
```

Select() 함수와 중첩하여 보다 복잡한 계산을 할 수 있습니다. 예를 들어, 반도체 관련 기업의 시가총액 평균은 다음과 같이 계산할 수 있습니다.

```
Mean(Select(반도체 관련 기업 and 시가총액, 1))
```

### Sum()

입력 쿼리 결과값의 합계를 계산합니다.

예를 들어, 비트코인 관련 기업의 매출액의 합계를 아래와 같이 계산할 수 있습니다.

```
Sum(Select(비트코인 관련 기업 and 2017 매출액, 1))
```

### Top(), Bottom()

입력 쿼리의 결과값들을 정렬하여 상위 n개, 혹은 하위 n개만 보여줍니다.

{% hint style="info" %}
Top({입력쿼리}, 개수)
{% endhint %}

{% hint style="info" %}
Bottom({입력쿼리}, 개수)
{% endhint %}

예를 들어, 시가 배당률이 가장 높은 10개의 기업을 아래와 같이 계산할 수 있습니다.

```
Top(dps/주가, 10)
```

입력 쿼리가 여러 조건으로 중첩되어 있는 경우, 그 중 어떤 결과값을 선택하여 상위 n개만 가져오기 위해서는 선택 함수를 사용하거나, 두번째 파라미터로 몇번째 결과값을 사용할지 추가하면 됩니다.

{% hint style="info" %}
Top({입력쿼리}, 개수, 몇번째 쿼리 결과를 기준으로 할 것인지 순)
{% endhint %}

예를 들어, 반도체 관련 기업 중 시가총액이 1000억원 이상인 기업에 대하여, 매출액 순위 top 10 기업을 추출하고자 한다면 다음과 같이 쿼리할 수 있습니다.

```
Top(반도체 관련 기업 and 시가총액 > 100000000000 and 매출액, 10, 2)
```

### Rank()

입력 쿼리의 결과값을 순위를 매겨서 리턴합니다.&#x20;

예를 들어, 토지 순위를 다음과 같이 입력하여 확인해 볼 수 있습니다. &#x20;

```
Rank(토지)
```

### Sort()

입력 쿼리의 결과값을 정렬하여 리턴합니다.&#x20;

```
Sort(Rank(매출액))
```

정렬 방법을 내 차순으로 바꾸기 위해서는 아래와 같이 파라미터를 추가하면 됩니다.

```
Sort(매출액 > 1000000000, ascending=False)
```
