<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>ena_hong.log</title>
        <link>https://velog.io/</link>
        <description></description>
        <lastBuildDate>Fri, 30 Jun 2023 09:20:51 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>ena_hong.log</title>
            <url>https://images.velog.io/images/ena_hong/profile/d39e99ff-9ba2-4c32-aec4-4d185ee9835c/social.png</url>
            <link>https://velog.io/</link>
        </image>
        <copyright>Copyright (C) 2019. ena_hong.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/ena_hong" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[ expressions]]></title>
            <link>https://velog.io/@ena_hong/expressions</link>
            <guid>https://velog.io/@ena_hong/expressions</guid>
            <pubDate>Fri, 30 Jun 2023 09:20:51 GMT</pubDate>
            <description><![CDATA[<p>| <a href="https://www.youtube.com/watch?v=HN_95ObHAiw&amp;t=1698s">https://www.youtube.com/watch?v=HN_95ObHAiw&amp;t=1698s</a></p>
<h2 id="simple-case-expression">simple case expression</h2>
<pre><code class="language-sql">select n
     , case n
            when 1 then &#39;one&#39;
            when 2 then &#39;two&#39;
            else &#39;many&#39;
        end as name
from (values 1,2,3,4) as t(n)</code></pre>
<p><img src="https://velog.velcdn.com/images/ena_hong/post/4d548d1a-5044-46a3-8ed6-720d44927acc/image.png" alt=""></p>
<hr>
<h2 id="searched-case-expression">searched case expression</h2>
<pre><code class="language-sql">select n
     , case 
            when n = 1 then &#39;a&#39;
            when n in (2,3) then &#39;b&#39;
            else &#39;c&#39;
        end as name
from (values 1,2,3,4) as t(n)</code></pre>
<p><img src="https://velog.velcdn.com/images/ena_hong/post/2a6b52b6-f4d0-4c1e-b373-72cafecdabf5/image.png" alt=""></p>
<hr>
<h2 id="if-expression">if expression</h2>
<hr>
<h2 id="try-expression">try expression</h2>
<ul>
<li>try avoids failures below
```sql</li>
<li><ul>
<li>에러 발생 
select 
 8/0 as div_zero,                      -- DIVISION_BY_ZERO: / by zero
 cast(&#39;abc&#39; as integer) as not_int,  -- INVALID_CAST_ARGUMENT: Cannot cast &#39;abc&#39; to INT
 2000000000 + 2000000000 as overflow -- NUMERIC_VALUE_OUT_OF_RANGE: integer addition overflow</li>
</ul>
</li>
</ul>
<p>-- 무시하고 넘어가고 싶을 경우 try 함수 사용한다. 
select 
    try(8/0) as div_zero,<br>    try(cast(&#39;abc&#39; as integer)) as not_int,<br>    try(2000000000 + 2000000000) as overflow </p>
<pre><code>***
## lambda expression
### overview 
lambda expression with one input : `x -&gt; x + 8`
lambda expression with two inputs &quot; `(x,y) -&gt; x+y`
</code></pre>]]></description>
        </item>
        <item>
            <title><![CDATA[[presto]J son Functions]]></title>
            <link>https://velog.io/@ena_hong/prestoJ-son-Functions</link>
            <guid>https://velog.io/@ena_hong/prestoJ-son-Functions</guid>
            <pubDate>Thu, 07 Apr 2022 07:57:48 GMT</pubDate>
            <description><![CDATA[<p>reference</p>
<blockquote>
<p>[Json에서 데이터 추출 ] (<a href="https://docs.aws.amazon.com/ko_kr/athena/latest/ug/extracting-data-from-JSON.html">https://docs.aws.amazon.com/ko_kr/athena/latest/ug/extracting-data-from-JSON.html</a>) -- amazon athena 사용 설명서
<a href="https://prestodb.io/docs/current/functions/json.html">Presto Json Functions </a> -- presto documentation</p>
</blockquote>
]]></description>
        </item>
        <item>
            <title><![CDATA[[SQL] 분석함수 Window Function ]]></title>
            <link>https://velog.io/@ena_hong/SQL-Analytic-Function-%EB%B6%84%EC%84%9D%ED%95%A8%EC%88%98</link>
            <guid>https://velog.io/@ena_hong/SQL-Analytic-Function-%EB%B6%84%EC%84%9D%ED%95%A8%EC%88%98</guid>
            <pubDate>Tue, 22 Feb 2022 16:59:53 GMT</pubDate>
            <description><![CDATA[<h2 id="window-function">Window Function</h2>
<ul>
<li>로우별 그룹을 지정해서 값을 집계하는 함수</li>
<li>group by 절과는 다름</li>
<li>group by 절 사용 시, 집계 대상에 따라 로우 수가 줄어들지만, window 함수는 그렇지 않음
  -&gt; 로우 수는 그대로, 집계 값 산출 가능</li>
</ul>
<hr>
<ul>
<li>집계 함수 : <code>sum</code>, <code>max</code>, <code>min</code>, <code>avg</code> , <code>count</code> ... </li>
<li>순위 함수 : <code>row_number</code>, <code>rank</code>, <code>dense_rank</code></li>
<li>행 순서  함수 : <code>first_value</code>, <code>last_value</code>, <code>lag</code>, <code>lead</code> 등이 있음</li>
<li>비율 함수 : <code>percent_rank</code>, <code>ratio_to_report</code>, <code>cume_dist</code>, <code>ntile</code></li>
</ul>
<hr>
<ul>
<li>window 함수 구문<blockquote>
<p> <code>PARTITION BY</code> : Group by 같은 역할
<code>ORDER BY</code> : ORDER BY 역할
<code>ROW 또는 RANGE</code> : WHERE의 역할  : window 절 </p>
</blockquote>
</li>
</ul>
<pre><code class="language-sql">window 함수() OVER (PARTITION BY col1, col2, ...
            ORDER BY col1, col2,...
            ROW 또는 RANGE )
# PARTITION BY : 분석함수 집계가 되는 대상으로 로우 값의 범위, 그룹
# PARTITION BY 생략시 전체 로우가 분석함수 집계 대상이 됨
# ORDER BY : 분석함수 계산 시, 고려되는 로우 순서</code></pre>
<hr>
<ul>
<li>WINDOW 절 : ROW 또는 RANGE</li>
</ul>
<hr>
<h2 id="1-ranking-function">1. Ranking Function</h2>
<h3 id="1️⃣-row_number--일련-번호">1️⃣ row_number() : 일련 번호</h3>
<p>창 파티션 내의 행 순서에 따라 한 행부터 시작하여 각 행에 대해 고유한 일련 번호를 반환합니다.</p>
<ul>
<li>Examples<pre><code class="language-sql"># Task1 : 부서별로 사원의 급여 순으로 순번을 구하라
SELECT b.department_id, b.department_name
  , a.first_name || &#39; &#39; || a.last_name as emp_name
  , row_number() OVER (PARTITION BY b.department_id 
                      ORDER BY a.salary) as dept_sal_seq 
  , a.salary
FROM employees a
JOIN department b 
  on a.department_id = b.department_id 
ORDER BY 2,4;</code></pre>
<img src="https://images.velog.io/images/ena_hong/post/fc052102-e945-47d8-a26d-49db9172999e/%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202022-02-23%20%E1%84%8B%E1%85%A9%E1%84%8C%E1%85%A5%E1%86%AB%2012.10.03.png" alt=""></li>
</ul>
<pre><code class="language-sql"># Tsak2 : 부서별로 사원의 급여가 높은 순으로 순번을 구하라
SELECT b.department_id, b.department_name
    , a.first_name || &#39; &#39; || a.last_name as emp_name
    , row_number() OVER (PARTITION BY b.department_id
                        ORDER BY a.salary desc) as dept_sal_seq
    , a.salary
FROM employees a
JOIN departments b 
    on a.department_id = b.department_id
ORDER BY 2,4;</code></pre>
<p><img src="https://images.velog.io/images/ena_hong/post/b30c122e-7df5-484c-9015-a6f6215b8452/%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202022-02-23%20%E1%84%8B%E1%85%A9%E1%84%8C%E1%85%A5%E1%86%AB%2012.14.44.png" alt=""></p>
<pre><code class="language-sql"># Task3 : 전 사원의 급여가 높은 순으로 순번을 구하라

-- 방법 1
SELECT b.department_id, b.department_name,
    , a.first_name || &#39; &#39; || a.last_name as emp_name
    , row_number() OVER (ORDER BY a. salary desc) as sal_seq
    , a.salary
FROM employees a 
JOIN departments b
    on a.department_id = b.department_id
ORDER BY 4;

--방법 2: 가상컬럼 rownum 활용
SELECT b.department_id, b.department_name,
    , a.first_name || &#39; &#39; || a.last_name as emp_name
    , a.salary
    , rownum as sal_seq
FROM employees a 
JOIN departments b
    on a.department_id = b.department_id
ORDER BY 4;</code></pre>
<p><img src="https://images.velog.io/images/ena_hong/post/dc9ded69-17ec-483a-af84-5ce8465fb533/%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202022-02-23%20%E1%84%8B%E1%85%A9%E1%84%8C%E1%85%A5%E1%86%AB%2012.21.31.png" alt=""></p>
<hr>
<h3 id="2️⃣-rank--순위">2️⃣ rank() : 순위</h3>
<ul>
<li>그룹에 있는 값의 순위를 반환</li>
<li>row_number()와 쿼리 결과 값 다른점 체크할것</li>
<li>Examples <pre><code class="language-sql"># Task1 : 부서별로 사원의 급여가 높은 순으로 순위를 구하라
SELECT b.department_id, b.department_name
  , a.first_name || &#39; &#39; || a.last_name as emp_name
  , rank() OVER (PARTITION BY b.department_id
                      ORDER BY a.salary desc) as dept_sal_seq
  , a.salary
FROM employees a
JOIN departments b 
  on a.department_id = b.department_id
ORDER BY 2,4;</code></pre>
<img src="https://images.velog.io/images/ena_hong/post/ec8b284f-34c8-48d8-b624-6fb346828cc2/%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202022-02-23%20%E1%84%8B%E1%85%A9%E1%84%8C%E1%85%A5%E1%86%AB%2012.34.32.png" alt=""></li>
</ul>
<hr>
<h3 id="3️⃣-dense_rank--누적-순위">3️⃣ dense_rank() : 누적 순위</h3>
<ul>
<li>그룹에 있는 값의 순위를 반환</li>
<li>동점 값이 시퀀스에서 차이를 만들지 않는다는 점을 제외하면 rank()와 유사</li>
<li>Example<pre><code class="language-sql"># Task1 : 부서별로 사원의 급여가 높은 순 누적순위
SELECT b.department_id, b.department_name
  , a.first_name || &#39; &#39; || a.last_name as emp_name
  , dense_rank() OVER (PARTITION BY b.department_id
                      ORDER BY a.salary desc) as dept_sal_seq
  , a.salary
FROM employees a
JOIN departments b 
  on a.department_id = b.department_id
ORDER BY 2,4;</code></pre>
<img src="https://images.velog.io/images/ena_hong/post/1efc276f-8d34-4061-ab35-00a4d84ac84e/%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202022-02-23%20%E1%84%8B%E1%85%A9%E1%84%8C%E1%85%A5%E1%86%AB%2012.39.45.png" alt=""></li>
</ul>
<hr>
<h2 id="2-value-functions">2. Value Functions</h2>
<h3 id="1️⃣-leadexpr-offset-default--후행-로우값">1️⃣ LEAD(expr, offset, default) : 후행 로우값</h3>
<ul>
<li>현재 행 뒤에 있는 행의 값을 반환</li>
<li>offset : 간격 띄우기로 생락 시 기본 오프셋은 <code>1</code> </li>
<li>후행 로우값이 없을경우 default 값이 반환 </li>
<li>default 값이 지정되지 않으면 <code>null</code>이 반환</li>
<li>Examples<pre><code class="language-sql"># Task 1 : 부사별, 입사일자 순, 직후 사원의 급여를 구하라
</code></pre>
</li>
</ul>
<p>SELECT b.department_id, b.department_name
    , a.first_name || &#39; &#39; || a.last_name as emp_name
    , a.hire_date
    , a.salary
    , LEAD(salary) OVER (PARTITION BY b.department_id
                        ORDER BY a.hire_date) as lead_salary
FROM employees a
JOIN departments b 
    on a.department_id = b.department_id
ORDER BY 2,4;</p>
<pre><code>![](https://images.velog.io/images/ena_hong/post/c316d1c3-c2b9-4701-8d9a-efe4b72ca61a/%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202022-02-23%20%E1%84%8B%E1%85%A9%E1%84%8C%E1%85%A5%E1%86%AB%2012.54.25.png)

```sql
# Task1 : 부서별, 입사일자 순, 직후 사원의 급여를 구하라

SELECT b.department_id, b.department_name
    , a.first_name || &#39; &#39; || a.last_name as emp_name
    , a.hire_date
    , a.salary
    , LEAD(salary,1,0) OVER (PARTITION BY b.department_id
                        ORDER BY a.hire_date) as lead_salary
FROM employees a
JOIN departments b 
    on a.department_id = b.department_id
ORDER BY 2,4;</code></pre><p><img src="https://images.velog.io/images/ena_hong/post/d96e6bbb-adda-4fe4-be19-3425de859987/%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202022-02-23%20%E1%84%8B%E1%85%A9%E1%84%8C%E1%85%A5%E1%86%AB%201.01.07.png" alt=""></p>
<pre><code class="language-sql"># Task 2 : 부서별, 입사일자 순, 2 로우 후 사원의 급여를 구하라

SELECT b.department_id, b.department_name
    , a.first_name || &#39; &#39; || a.last_name as emp_name
    , a.hire_date
    , a.salary
    , LEAD(salary,2,0) OVER (PARTITION BY b.department_id
                        ORDER BY a.hire_date) as lead_salary
FROM employees a
JOIN departments b 
    on a.department_id = b.department_id
ORDER BY 2,4;</code></pre>
<p><img src="https://images.velog.io/images/ena_hong/post/66dd9764-14b5-4e86-9ddf-c2f8636261ce/%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202022-02-23%20%E1%84%8B%E1%85%A9%E1%84%8C%E1%85%A5%E1%86%AB%201.21.10.png" alt=""></p>
<h3 id="2️⃣-lagexpr-offset-default--선행-로우값">2️⃣ LAG(expr, offset, default) : 선행 로우값</h3>
<ul>
<li>Examples <pre><code class="language-sql"># Task 1 : 부서별, 입사일자 순, 직전 사원의 급여를 구하라
</code></pre>
</li>
</ul>
<p>SELECT b.department_id, b.department_name
    , a.first_name || &#39; &#39; || a.last_name as emp_name
    , a.hire_date
    , a.salary
    , LAG(salary, 1, 0) OVER (PARTITION BY b.department_id 
                        ORDER BY a.hire_date) as lag_salary
FROM employees a 
JOIN departments b
    on a.department_id = b.department_id
ORDER BY 2,4;</p>
<pre><code>![](https://images.velog.io/images/ena_hong/post/12a8f665-4e7c-459e-963c-47e3cc244a01/%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202022-02-23%20%E1%84%8B%E1%85%A9%E1%84%8C%E1%85%A5%E1%86%AB%201.34.37.png)

### 3️⃣ first_value(x) 
* Returns the first value of the window

### 4️⃣ last_value(x)
* Returns the last value of the window
---
## 3. Aggregate Function 
집계 함수는 현재 행의 window 프레임 내에 있는 행의 각 행에 대해 계산됨
`sum`, `min`, `max`, `avg`, `count`
* Examples
```sql
# Task 1 : 부서별 평균 급여와 사원의 급여를 동시에 조회 

SELECT b.department_id, b.department_name
    , a.first_name || &#39; &#39; || a.last_name as emp_name
    , a.salary
    , ROUND(AVG(a.salary) OVER (PARTITION BY b.department_id
                        ORDER BY b.departmnet_id), 0) as dept_avg_sal
FROM employees a 
JOIN depatments b 
    on a.department_id = b.department_id
ORDER BY 2,3;</code></pre><p><img src="https://images.velog.io/images/ena_hong/post/62b68e8c-0c09-40fc-90be-6a7442f90af4/%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202022-02-23%20%E1%84%8B%E1%85%A9%E1%84%8C%E1%85%A5%E1%86%AB%201.50.09.png" alt=""></p>
<pre><code class="language-sql"># Task 2 : 사원의 급여왕 부서별 누적 급여 조회

SELECT b.department_id, b.department_name
    , a.first_name || &#39; &#39; || a.last_name as emp_name
    , a.salary
    , ROUND(SUM(a.salary) OVER(PARTITION BY b.department_id 
                        ORDER BY a.salary), 0) as dept_cum_sum
FROM employees a
JOIN department b
     on a.department_id = b.department_id
ORDER BY 2,4;</code></pre>
<p><img src="https://images.velog.io/images/ena_hong/post/cade276d-66db-45c0-8a51-3e3e4c245a82/%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202022-02-23%20%E1%84%8B%E1%85%A9%E1%84%8C%E1%85%A5%E1%86%AB%201.54.56.png" alt=""></p>
<hr>
<p>| <a href="https://prestodb.io/docs/current/functions/window.html#aggregate-functions">https://prestodb.io/docs/current/functions/window.html#aggregate-functions</a></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[Conditional Expresstions]]></title>
            <link>https://velog.io/@ena_hong/Conditional-Expresstions</link>
            <guid>https://velog.io/@ena_hong/Conditional-Expresstions</guid>
            <pubDate>Sun, 20 Feb 2022 09:08:37 GMT</pubDate>
            <description><![CDATA[<h3 id="1-case⭐️">1. CASE⭐️</h3>
<ul>
<li>IF ~ THEN ~ ELSE 로직을 구현한 표현식 </li>
<li>여러 조건을 체크해 조건별 값을 반환하는 표현식 </li>
<li><strong>1️⃣ 단순형</strong>과 <strong>2️⃣ 검색형</strong>이 있음</li>
<li>반환하는 값의 데이터 유형이 모두 같아야 함 ★★★
(THEN과 ELSE 다음은 값 뿐만 아니라 문자형, 표현식이 올 수 있음)</li>
<li>ELSE는 생략이 가능</li>
<li>비교 데이터 기준 특정 WHEN절 조건이 참이면 이후 조건은 체크하지 않음</li>
</ul>
<h4 id="-1️⃣-단순형"><strong>-1️⃣ 단순형</strong></h4>
<ul>
<li><p>단순형 표현식</p>
<pre><code class="language-sql">SELECT 
  CASE expr WHEN 비교표현식1 THEN 값1 -- expr이 비교표현식1과 같으면 값1를 반환
            WHEN 비교표현식2 THEN 값2 -- expr이 비교표현식2와 같으면 값2를 반환
             …
            ELSE 값n -- 어느 비교표현식과도 같지 않으면 값n을 반환 
  END (as) -- 컬럼명 지정
FROM employees </code></pre>
</li>
<li><p>Examples</p>
<pre><code class="language-sql">SELECT country_id
  , country_name
  , CASE region_id WHEN 1 THEN &#39;유럽&#39;
                  WHEN 2 THEN &#39;아메리카&#39;
                  WHEN 3 THEN &#39;아시아&#39;
                  WHEN 4 THEN &#39;중동 및 아프리카&#39;
    END as region_name
FROM countries;</code></pre>
<h4 id="-2️⃣-검색형"><strong>-2️⃣ 검색형</strong></h4>
</li>
<li><p>단순형에 비해 다양한 조건 검색이 가능해 그 활용범위가 더 넓음</p>
</li>
<li><p>검색형 표현식</p>
<pre><code class="language-sql">SELECT 
CASE WHEN 조건1 THEN 값1 -- 조건1을 만족하면 값1f를 반환
       WHEN 조건2 THEN 값2 -- 조건2를 만족하면 값2를 반환
     … 
      ELSE 값n -- 어느 조건도 만족하지 않으면 ELSE 다음의 값n을 반환

END (AS) -- 컬럼명 지정
FROM table1</code></pre>
</li>
<li><p>Example</p>
<pre><code class="language-sql">SELECT employee_id, first_name, last_name, salary
  , CASE WHEN salary between 1 and 5000 THEN &#39;낮음&#39;
         WHEN salary between 5001 and 10000 THEN &#39;중간&#39;
         WHEN salary between 10001 and 15000 THEN &#39;높음&#39;
         ELSE &#39;최상위&#39;
    END as salary_rank
FROM employees;</code></pre>
</li>
</ul>
<hr>
<h3 id="2-if">2. IF</h3>
<ul>
<li>IF 함수는 실제로 다음 CASE 표현식과 동일한 언어 구조입니다.</li>
</ul>
<p>1️⃣ <code>if(condition, true_value)</code></p>
<ul>
<li>조건이 true이면 true_value를 반환하고 그렇지 않으면 null이 반환</li>
</ul>
<p>2️⃣ <code>if(condition, true_value, false_value)</code></p>
<ul>
<li>조건이 true이면 true_value를 반환하고, 그렇지 않으면 false_value를 반환</li>
</ul>
<h3 id="3-coalesce⭐️">3. COALESCE⭐️</h3>
<p>1️⃣ <code>coalesce(컬럼,&#39;변환값&#39;)</code> : null 값 변경⭐️</p>
<ul>
<li>컬럼값이 null 이면 &#39;변환값&#39;으로 변환, null이 아니면 컬럼값 그대로 반환 </li>
<li>oracle 에서는 NVL함수 사용하면 됨. </li>
</ul>
<p>2️⃣ <code>coalesce(expr1, expr2, expr3, ...)</code></p>
<ul>
<li>expr1, expr2, expr3... 에서 첫번째로 null값이 아닌 값 반환</li>
<li>example<pre><code class="language-sql">SELECT coalesce(null, null, &#39;b&#39;, null) -- &#39;b&#39; </code></pre>
<h3 id="4-nullif">4. NULLIF</h3>
1️⃣ <code>nullif(value1, value2)</code></li>
<li>value1와 value2 값이 같으면 null을 반환하고, 그렇지 않으면 value1을 반환</li>
</ul>
<h3 id="5-try">5. TRY</h3>
<p>1️⃣ <code>try(expresstion)</code></p>
<ul>
<li>특정 오류 발생 시 NULL을 반환하여 오류를 처리함</li>
<li>손상되거나 잘못된 데이터가 발견되었을 때 쿼리가 실패하는 대신 NULL 또는 기본값을 생성하는 것이 바람직한 경우 TRY 함수가 유용. </li>
<li>기본값을 지정하기 위해 TRY 함수를 COALESCE 함수와 함께 사용할 수 있다.</li>
</ul>
<p>Try로 처리 가능한 오류</p>
<ul>
<li>0으로 나누기</li>
<li>잘못된 캐스트 인수 또는 잘못된 함수 인수</li>
<li>숫자 값이 범위를 벗어남</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[[Presto]String Functions
| Regular Expression]]></title>
            <link>https://velog.io/@ena_hong/PrestoString-Functions-Regular-Expression</link>
            <guid>https://velog.io/@ena_hong/PrestoString-Functions-Regular-Expression</guid>
            <pubDate>Sun, 20 Feb 2022 07:35:25 GMT</pubDate>
            <description><![CDATA[<h3 id="1-문자열-결합">1. 문자열 결합</h3>
<p>1️⃣  string1 <code>||</code> string2 ... 
2️⃣ <code>concat</code>(string1, string2, ...)</p>
<pre><code class="language-sql">SELECT employee_id
    , first_name || &#39;-&#39; || last_name as emp_name1 -- 1,2 조회 결과 같음
    , concat(first_name,&#39;-&#39;,last_name) emp_name2 -- 1,2 조회 결과 같음
FROM employees </code></pre>
<hr>
<h3 id="2-문자열-비교">2. 문자열 비교</h3>
<p>1️⃣ LIKE </p>
<ul>
<li>LIKE 연산자는 문자열에서 지정된 문자 패턴을 일치시키는 데 사용됨</li>
<li>매칭은 대소문자를 구분</li>
<li>&#39;%&#39; 는 모든 문자를 의미 </li>
<li>형태 : <code>컬럼명 LIKE pattern</code><pre><code class="language-sql">SELECT employee_id
FROM employees 
WHERE last_name LIKE&#39;da%&#39;
  and last_name LIKE&#39;%Da&#39;
  and last_name LIKE&#39;%da%&#39;</code></pre>
2️⃣ 복수의 LIKE 절</li>
<li>형태 : <code>regexp_like</code>(컬럼명, &#39;A|B|C|D|E&#39;)<pre><code class="language-sql">SELECT employee_id
FROM employees 
WHERE regexp_like(category_1st, &#39;니트|원피스|스웨터&#39;)</code></pre>
</li>
</ul>
<hr>
<h3 id="3-문자형-함수">3. 문자형 함수</h3>
<ul>
<li>자주 쓰는 함수만 정리</li>
</ul>
<table>
<thead>
<tr>
<th align="left">n</th>
<th align="left">함수</th>
<th align="center">기능</th>
<th align="center">사용예</th>
<th align="center">반환값</th>
</tr>
</thead>
<tbody><tr>
<td align="left">1️⃣</td>
<td align="left">lower(string)</td>
<td align="center">소문자로 변환</td>
<td align="center">SELECT lower(&#39;SQL&#39;) FROM DUAL;</td>
<td align="center">sql</td>
</tr>
<tr>
<td align="left">2️⃣</td>
<td align="left">upper(string)</td>
<td align="center">대문자로 변환</td>
<td align="center">SELECT upper(&#39;sql&#39;) FROM DUAL;</td>
<td align="center">SQL</td>
</tr>
<tr>
<td align="left">3️⃣</td>
<td align="left">length(string)</td>
<td align="center">문자의 글자수 반환</td>
<td align="center">SELECT length(&#39;sql&#39;) FROM DUAL;</td>
<td align="center">3</td>
</tr>
<tr>
<td align="left">4️⃣</td>
<td align="left">substr(string, n1, n2)</td>
<td align="center">-n1 부터 시작해서 n2만큼 잘라낸 결과 반환</td>
<td align="center">SELECT substr(&#39;ABCDEFG&#39;, 2, 3) FROM DUAL;</td>
<td align="center">BDC</td>
</tr>
<tr>
<td align="left"></td>
<td align="left"></td>
<td align="center">-n1이 음수면 오른쪽 끝에서부터 거꾸로 세어서 가져옴</td>
<td align="center"></td>
<td align="center"></td>
</tr>
<tr>
<td align="left"></td>
<td align="left"></td>
<td align="center">-n2 생략시 n1부터 끝까지 가져옴</td>
<td align="center"></td>
<td align="center"></td>
</tr>
<tr>
<td align="left">5️⃣</td>
<td align="left">trim(string)</td>
<td align="center">문자 양쪽 끝 공백을 제거한 결과 반환</td>
<td align="center">SELECT length(&#39; SQL &#39;) FROM DUAL;</td>
<td align="center">&#39;SQL&#39;</td>
</tr>
<tr>
<td align="left">6️⃣</td>
<td align="left">replace(string, search, replace)</td>
<td align="center">string에서 search를 찾아 replace로 대체</td>
<td align="center">SELECT replace(&#39;ABC&#39;, &#39;B&#39;, &#39;d&#39;) FROM DUAL;</td>
<td align="center">AdC</td>
</tr>
<tr>
<td align="left">7️⃣</td>
<td align="left">split(string, 구분기호)</td>
<td align="center">구분 기호기준으로 문자열을 분할하고 배열을 반환</td>
<td align="center">SELECT split(&#39;abc-def&#39;, &#39;-&#39;)</td>
<td align="center">[abc, def]</td>
</tr>
<tr>
<td align="left">8️⃣</td>
<td align="left">split_part(string, 구분기호, index)</td>
<td align="center">-구분 기호기준으로 문자열을 분할하고 필드 인덱스를 반환</td>
<td align="center">SELECT split(&#39;abc-def&#39;, &#39;-&#39;, 1)</td>
<td align="center">abc</td>
</tr>
<tr>
<td align="left"></td>
<td align="left"></td>
<td align="center">-index starts with 1</td>
<td align="center">SELECT split(&#39;abc-def&#39;, &#39;-&#39;, 2)</td>
<td align="center">def</td>
</tr>
</tbody></table>
<h3 id="4-정규-표현식">4. 정규 표현식</h3>
<p>1️⃣ <code>regexp_extract_all</code>(string, pattern, group)-&gt; varchar</p>
<pre><code class="language-sql">-- /d+ -&gt; 숫자
-- [a-z]+ -&gt; 문자
SELECT regexp_extract_all(&#39;1a 2b 14m&#39;, &#39;(\d+)([a-z]+)&#39;, 1) -- [&#39;1&#39;, &#39;2&#39;, &#39;14&#39;]
    , regexp_extract_all(&#39;1a 2b 14m&#39;, &#39;(\d+)([a-z]+)&#39;, 2) -- [&#39;a&#39;, &#39;b&#39;, &#39;m&#39;]</code></pre>
<p>2️⃣ <code>regexp_replace</code>(string, pattern, function) -&gt; varchar</p>
<pre><code class="language-sql">SELECT regexp_replace(&#39;new york&#39;, &#39;(\w)(\w*)&#39;, x -&gt; upper(x[1]) || lower(x[2])); --&#39;New York&#39;</code></pre>
<p>3️⃣ <code>regexp_like</code>(string, &#39;a|b|c&#39;) -&gt; boolean</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[ANSI] 조인 ]]></title>
            <link>https://velog.io/@ena_hong/%EC%A1%B0%EC%9D%B8-JOIN</link>
            <guid>https://velog.io/@ena_hong/%EC%A1%B0%EC%9D%B8-JOIN</guid>
            <pubDate>Wed, 16 Feb 2022 15:15:15 GMT</pubDate>
            <description><![CDATA[<ul>
<li>각 테이블의 조인 컬럼 명이 같을 필요는 없으나 동일하게 만드는 것이 좋음</li>
<li>조인 컬럼은 한 개 이상으로 구성될 수 있고</li>
<li>조인 방식에 따라 크게 <strong>내부조인</strong>, <strong>외부조인</strong>으로 구분 (<strong>셀프조인</strong>도 가능)
  -내부조인 : <code>inner</code> join
  -외부조인 : <code>left outer</code> join / <code>right outer</code> join / <code>full outer</code> join </li>
</ul>
<h2 id="1-내부조인-inner-join">1. 내부조인 (inner join)</h2>
<ul>
<li>가장 기본적인 조인</li>
<li>조인 참여 테이블 간 <strong>조인 컬럼 값이 같은 건만</strong> 가져옴
<img src="https://images.velog.io/images/ena_hong/post/991e07a9-7664-42eb-9bda-68b799a2fc8b/%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202022-02-16%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%2011.42.26.png" alt=""></li>
<li>각 테이블 마다 ailas(별칭) 주기</li>
<li>조인 조건을 만족하는 데이터만 조회됨</li>
<li>INNER 생략 가능 </li>
</ul>
<p>쿼리 예시</p>
<pre><code class="language-sql">      SELECT a.employee_id 
          , a.first_name || &#39; &#39; || a.last_name as emp_name
          , b.department_id 
          , b.department_name
      FROM employees a # 테이블마다 별칭 주기 
      INNER JOIN departments b # inner 생략 가능 
          ON a.department_id = b.department_id #조인 조건을 만족하는 데이터만 조회됨</code></pre>
<p>조회 결과 : <img src="https://images.velog.io/images/ena_hong/post/bdb0bed1-b958-4119-8693-603e0b7bfa4a/%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202022-02-16%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%2011.51.55.png" alt="">
해석 : 사번이 178번인 Kimberely Grant는 department_id 값이 NULL 이어서 조회가 되지 않음<img src="https://images.velog.io/images/ena_hong/post/a8d0f4ee-4e5f-4104-a76a-23e2e203e303/%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202022-02-16%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%2011.53.51.png" alt=""></p>
<hr>
<h2 id="2-외부조인">2. 외부조인</h2>
<ul>
<li>조인 조건을 만족하는 것은 물론 만족하지 않는 데이터(로우) 까지 포함해 조회</li>
<li>OUTER 생략 가능 </li>
<li>종류 : LEFT(기준 테이블) OUTER JOIN / RIGHT(기준 테이블) OUTER JOIN / FULL OUTER JOIN</li>
</ul>
<h3 id="-외부-조인은-왜-사용할까">※ 외부 조인은 왜 사용할까?</h3>
<ul>
<li>테이블 설계가 제대로 되어 있고, 데이터가 정확히 입력되어 있다면 굳이 외부 조인을 사용할 필요가 없음</li>
<li>하지만 현실은 테이블 설계를 완벽히 할 수 없음</li>
<li>애초에 제대로 설계했더라도 업무가 변경되면 로직 수정이 필요</li>
<li>데이터 입력 시 오류로 인해 잘못된 데이터 입력, 누락 데이터 발생
EX) 178번 Kimberely Grant는 부서번호가 없음</li>
<li>부서가 없는 사원 일까?</li>
<li>설사 부서 발령이 안되더라도 미발령부서 정보를 부서 테이블에 등록하는 것이 정상적</li>
</ul>
<h3 id="2-1-left-outer-join">2-1) LEFT OUTER JOIN</h3>
<p><img src="https://images.velog.io/images/ena_hong/post/ade807ba-ef30-4fd7-8a62-1a423cc90b68/%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202022-02-16%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%2011.59.32.png" alt=""></p>
<p>쿼리 예시</p>
<pre><code class="language-sql">      SELECT a.employee_id 
          , a.first_name || &#39; &#39; || a.last_name as emp_name
          , b.department_id 
          , b.department_name
      FROM employees a # 테이블마다 별칭 주기 
      LEFT OUTER JOIN departments b # OUTER 생략 가능 
          ON a.department_id = b.department_id </code></pre>
<p>쿼리 결과
<img src="https://images.velog.io/images/ena_hong/post/d44ef5be-29c1-4cde-9bfd-b06d4f6f6385/%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202022-02-17%20%E1%84%8B%E1%85%A9%E1%84%8C%E1%85%A5%E1%86%AB%2012.03.20.png" alt="">
해석: department_id 값이 NULL값이 사번이 178번 Kimberely Grant도 조회됨</p>
<h3 id="2-2-right-outer-join">2-2) RIGHT OUTER JOIN</h3>
<p><img src="https://images.velog.io/images/ena_hong/post/6f598775-517f-4b8d-afeb-7db0151f69ec/%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202022-02-17%20%E1%84%8B%E1%85%A9%E1%84%8C%E1%85%A5%E1%86%AB%2012.00.47.png" alt=""></p>
<p>쿼리 예시</p>
<pre><code class="language-sql">      SELECT a.employee_id 
          , a.first_name || &#39; &#39; || a.last_name as emp_name
          , b.department_id 
          , b.department_name
      FROM employees a # 테이블마다 별칭 주기 
      LEFT OUTER JOIN departments b # OUTER 생략 가능 
          ON a.department_id = b.department_id </code></pre>
<hr>
<h2 id="3-셀프조인">3. 셀프조인</h2>
<ul>
<li>자기 자신과 조인</li>
<li>동일한 테이블 끼리 조인</li>
</ul>
<p>쿼리 예시</p>
<pre><code class="language-sql"># manager_id에 해당하는 사원명을 가져오기 위해 셀프조인 했음

      SELECT a.employee_id 
          , a.first_name || &#39; &#39; || a.last_name as emp_name
          , a.manager_id
          , b.first_name || &#39; &#39; || b.last_name as manager_name
      FROM employees a # 테이블마다 별칭 주기 
      INNER JOIN departments b # INNER 생략 가능 
          ON a.manager_id = b.employee_id</code></pre>
]]></description>
        </item>
        <item>
            <title><![CDATA[맥북 단축키]]></title>
            <link>https://velog.io/@ena_hong/%EB%A7%A5%EB%B6%81-%EB%8B%A8%EC%B6%95%ED%82%A4</link>
            <guid>https://velog.io/@ena_hong/%EB%A7%A5%EB%B6%81-%EB%8B%A8%EC%B6%95%ED%82%A4</guid>
            <pubDate>Sat, 22 Jan 2022 16:03:03 GMT</pubDate>
            <description><![CDATA[<ul>
<li>화면 부분 캡쳐 방법 → <code>cmd + shift + 4</code></li>
<li>화면 전체 캡쳐 → <code>cmd + shift + 3</code></li>
<li>화면 녹화 →<code>cmd + shift + 5</code></li>
<li>백틱 
→ 한글일 때 <code>option + ₩</code><br>→ 영어일 때 <code>₩</code> = `</li>
<li>윈도우에서 <code>fn + shift + &gt;</code> 기능 → <code>cmd + shift</code> or <code>control + shift</code></li>
<li>윈도우에서  <code>shift + &gt;</code>  → <code>option + &gt;</code></li>
<li>윈도우에서 alt + tap   → 앱간 이동 : <code>cmd + tap</code></li>
<li>파일 검색 → <code>command + shift + G</code>  -&gt;  <code>~/라이브러리</code>  검색</li>
<li>찾기 검색 → <code>cmd + F</code></li>
<li>⭐검색 기능 → <code>cmd + space</code> : 윈도우의 시작버튼 &amp; 구글이랑 연동되어 있어 구글 검색 가능 &amp; 계산기로도 사용 가능</li>
<li>터미널 여는 방법 → <code>cmd + space</code> → <code>Spotlight Search</code> 에서 <code>terminal</code> 검색 후 엔터 또는 더블클릭</li>
<li>삭제하기 &amp; 방금 삭제한 파일 바로 복구하기 → <code>cmd + delete</code>  &amp; <code>cmd + z</code></li>
<li>화면아래 앱 리스팅 부분은 <code>Dock</code> 이라고 함</li>
<li>화면창 닫기 → <code>cmd + w</code></li>
<li>프로그램 종료 → <code>cmd + q</code></li>
<li>마우스 오른쪽 → <code>control   + 마우스오른쪽</code></li>
<li>이모지 입력 → <code>control + cmd + space</code></li>
<li>F4 -&gt; <code>fn + F4</code></li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[[Presto]데이터 형식변환]]></title>
            <link>https://velog.io/@ena_hong/Presto%EB%8D%B0%EC%9D%B4%ED%84%B0-%ED%98%95%EC%8B%9D%EB%B3%80%ED%99%98</link>
            <guid>https://velog.io/@ena_hong/Presto%EB%8D%B0%EC%9D%B4%ED%84%B0-%ED%98%95%EC%8B%9D%EB%B3%80%ED%99%98</guid>
            <pubDate>Sat, 22 Jan 2022 15:47:14 GMT</pubDate>
            <description><![CDATA[<h1 id="1-cast">1. Cast</h1>
<p>type 인수에서 지정하는 데이터 형식을 반환</p>
<ul>
<li>int(숫자형) &lt;-&gt; varchar(문자열)</li>
<li>varchar(문자형) &lt;-&gt; date(날짜형) 등등 </li>
</ul>
<p><strong><code>CAST(expression AS type)</code></strong></p>
<blockquote>
<p>expression </p>
</blockquote>
<ul>
<li>열 이름이나 리터럴 같이 하나 이상의 값으로 평가되는 표현식. </li>
<li>NULL 값을 변환하면 마찬가지로 NULL이 반환됩니다. 또한 표현식에는 공    백이나 빈 문자열이 포함되어서도 안됨.</li>
</ul>
<blockquote>
<p>Type</p>
</blockquote>
<ul>
<li>지원되는 데이터 유형 중 하나</li>
<li><code>interger</code>, <code>date</code>, <code>varchar</code>, <code>boolean</code>, <code>timestamp</code> .. 등</li>
</ul>
<pre><code class="language-sql">-- 1. int -&gt; varchar
select cast(2022 as varchar) -- 결과 : 2022
--2. varchar -&gt; date
select cast(&#39;2022-03-20&#39; as date) -- 결과 : 2022-03-20</code></pre>
<h1 id="2-to_char">2. TO_CHAR</h1>
<p>TO_CHAR는 타임스탬프 또는 숫자 표현식을 문자열 데이터 형식으로 변환</p>
<ul>
<li>timestamp or date(날짜) -&gt; varchar(문자열)</li>
<li>number(숫자형) -&gt; varchar(문자열)</li>
</ul>
<p><strong><code>TO_CHAR(timestamp_expression | numeric_expression , &#39;format&#39;)</code></strong></p>
<pre><code class="language-sql">--timestamp -&gt; varchar
-- ex) x = 2022-03-20 15:54:01.084
SELECT 
      to_char(x, &#39;yyyy-mm-dd&#39;) -- 결과 : 2022-03-20
    , to_char(x, &#39;yyyy&#39;) -- 결과 : 2022
    , to_char(x, &#39;yyyy-mm&#39;) -- 결과 : 2022-03
    , to_char(x, &#39;yyyy/mm/dd&#39;) -- 결과 : 2022/03/20
    , to_char(x, &#39;mm&#39;) -- 결과 : 03
    , to_char(x, &#39;MON-DD-YYYY HH24:MIPM&#39;) -- 결과 : MAR-20-2022 15:54PM</code></pre>
<blockquote>
<p>참조 : <a href="https://docs.aws.amazon.com/ko_kr/redshift/latest/dg/r_CAST_function.html">aws docs</a></p>
</blockquote>
]]></description>
        </item>
        <item>
            <title><![CDATA[[Presto]Date and Time Functions]]></title>
            <link>https://velog.io/@ena_hong/PrestoDate-and-Time-Functions</link>
            <guid>https://velog.io/@ena_hong/PrestoDate-and-Time-Functions</guid>
            <pubDate>Sat, 22 Jan 2022 11:17:35 GMT</pubDate>
            <description><![CDATA[<hr>
<h1 id="1-date--time">1. Date &amp; Time</h1>
<ul>
<li><p>date, time, timestamp
<code>date 2012-08-08&#39;</code> -&gt;  결과 : <code>2012-08-08</code>
<code>time &#39;01:00&#39;</code> -&gt; 결과: <code>01:00:00.000</code>
<code>timestamp &#39;2012-08-08 01:00&#39;</code> -&gt; 결과 : <code>2012-08-09 01:00:00.000</code></p>
</li>
<li><p>date and time functions
<code>current_date</code> : 현재 날짜를 반환
<code>current_time</code> : 현재 시간을 반환
<code>current_timestamp</code> = <code>now()</code>: 현재 타임스탬프를 반환</p>
</li>
<li><p>date(x)
<code>date x</code> = <code>date(x)</code> = <code>cast(x as date)</code> : x의 타입의 date로 변환</p>
</li>
</ul>
<hr>
<h1 id="2-functions">2. Functions</h1>
<p>📌<strong>(x)의 데이터 타입이 <code>date</code>, <code>time</code>, <code>timstamp</code>이여야 함</strong>📌</p>
<hr>
<h2 id="2-1-extraction-function추출-기능">2-1. Extraction Function(추출 기능)</h2>
<ul>
<li>날짜에서 연도, 월, 주, 일 등의 정보만 추출하고 싶은 경우에 사용</li>
<li>종류 : 
1) <code>unit(x)</code> : date -&gt; bigint (숫자형)
2) <code>extract</code> : date -&gt; bigint (숫자형)
3) <code>to_char</code> : date -&gt; varchar (문자형)</li>
<li>unit : <code>year</code> , <code>quarter</code>, <code>month</code>, <code>week</code>, <code>day</code>, <code>hour</code> ...</li>
<li>x 타입 : <code>date</code>, <code>time</code>, <code>timstamp</code> 이여야 함</li>
</ul>
<h3 id="1-unitx---bigint">1) unit(x) -&gt; bigint</h3>
<p>⭐️<strong><code>year(x)</code></strong> :  x에서 연도 반환
⭐️<strong><code>month(x)</code></strong> : x에서 월 반환
⭐️<strong><code>week(x)</code></strong> : x에서 해당 연도의 주를 반환 (1 ~ 53)
⭐️<strong><code>hour(x)</code></strong> : x에서 시간 반환 (0 ~ 23)
⭐️<strong><code>quarter(x)</code></strong> : x에서 분기 반환 (1 ~ 4)</p>
<p>-<code>day(x)</code> = <code>day_of_month(x)</code> : 해당 월의 <code>일</code>(1<del>31일)을 반환
⭐️<strong><code>day_of_week(x)</code></strong> : x에서 해당 주의 <code>요일</code>(1(월)</del>7(일))을 반환<br>-<code>day_of_year(x)</code> : x에서 해당 연도의 일(1 ~ 366일)를 반환 </p>
<pre><code class="language-sql">select year(date &#39;2022-03-20&#39;) -- 결과 : 2022
select month(date &#39;2022-03-20&#39;) -- 결과 : 3
select week(date &#39;2022-03-20&#39;) -- 결과 : 11
select day(date &#39;2022-03-20&#39;) -- 결과 : 20
select day_of_week(date &#39;2022-03-20&#39;) -- 결과 : 7</code></pre>
<h3 id="2-extract---bigint">2) Extract -&gt; bigint</h3>
<p><strong><code>extract(unit from x)</code></strong></p>
<pre><code class="language-sql">select extract(year from date(&#39;2022-03-20&#39;)) -- 결과 : 2022
select extract(month from date &#39;2022-03-20&#39;) -- 결과 : 3
select extract(week from date(&#39;2022-03-20&#39;)) -- 결과 : 11
select extract(day from date &#39;2022-03-20&#39;) -- 결과 : 20
select extract(day_of_week from date(&#39;2022-03-20&#39;)) --결과 : 7</code></pre>
<h3 id="3-to_char---varchar">3) TO_CHAR -&gt; varchar</h3>
<pre><code class="language-sql">-- timestamp or date -&gt; 특정 형태의 varchar로 바꾸는 방법
-- x : timestamp or date 타입 형태 
-- ex) x = 2022-03-20 15:54:01.084
SELECT 
      to_char(x, &#39;yyyy-mm-dd&#39;) -- 결과 : 2022-03-20
    , to_char(x, &#39;yyyy&#39;) -- 결과 : 2022
    , to_char(x, &#39;yyyy-mm&#39;) -- 결과 : 2022-03
    , to_char(x, &#39;yyyy/mm/dd&#39;) -- 결과 : 2022/03/20
    , to_char(x, &#39;mm&#39;) -- 결과 : 03</code></pre>
<hr>
<h2 id="2-2-interval-functions--">2-2. Interval Functions(+, -)</h2>
<p>-종류 :   <code>date_add</code> , <code>date_diff</code>, <code>interval</code>
-unit : <code>year</code> , <code>quarter</code>, <code>month</code>, <code>week</code>, <code>day</code>, <code>hour</code> ...
-x 타입 : <code>date</code>, <code>time</code>, <code>timstamp</code> 이여야 함</p>
<h3 id="1-interval">1) Interval</h3>
<p><strong><code>x + Interval &#39;value&#39; unit</code></strong> = <code>x + (Interval &#39;value&#39; unit)</code></p>
<ul>
<li>x에 unit의 value만큼 더한값을 반환</li>
</ul>
<p><strong><code>x - Interval &#39;value&#39; unit</code></strong> = <code>x - (Interval &#39;value&#39; unit)</code></p>
<ul>
<li>x에 unit의 value만큼 뺀값을 반환<pre><code class="language-sql">select date &#39;2022-03-20&#39; + interval &#39;2&#39; month -- 결과 : 2022-05-20
select date &#39;2022-03-20&#39; + (interval &#39;2&#39; month) -- 결과 : 2022-05-20
select date &#39;2022-03-20&#39; - interval &#39;2&#39; month -- 결과 : 2022-01-20
select date &#39;2022-03-20&#39; - (interval &#39;2&#39; month) -- 결과 : 2022-01-20</code></pre>
<h3 id="2-date_add">2) date_add</h3>
</li>
<li><em><code>date_add(&#39;unit&#39;, value, x)</code>*</em></li>
<li>x에 unit의 value만큼 더한값을 반환</li>
<li>value 는 (+), (-) 둘다 가능  <pre><code class="language-sql">select date_add(&#39;month&#39;, 2, date(&#39;2022-03-20&#39;)) -- 결과 : 2022-05-20
select date_add(&#39;month&#39;, -2, date(&#39;2022-03-20&#39;)) -- 결과 : 2022-01-20</code></pre>
<h3 id="3-date_diff">3) date_diff</h3>
</li>
<li><em><code>date_diff(&#39;unit&#39;, x1, x2)</code> *</em></li>
<li>unit에 대한 <code>x2 - x1</code> 값을 반환  <pre><code class="language-sql">select date_diff(&#39;month&#39;, date(&#39;2022-03-20&#39;), date(&#39;2022-05-20&#39;)) --결과 : 2 </code></pre>
</li>
</ul>
<hr>
<h2 id="2-3-truncation-function잘라내기-기능">2-3. Truncation Function(잘라내기 기능)</h2>
<p>-종류 : date_trunc
-unit : year , quarter, month, week, day, hour ...
-x 타입 : date, time, timstamp 이여야 함</p>
<h3 id="1-date_trunc">1) date_trunc</h3>
<p><code>date_trunc(&#39;unit&#39;, x)</code></p>
<ul>
<li>unit으로 잘린 x를 반환</li>
<li>올림, 반올림, 내림 중 내림이라고 생각하면 됨<pre><code class="language-sql">select date_trunc(&#39;year&#39;, date &#39;2022-08-20&#39;) -- 결과 : 2022-01-01
select date_trunc(&#39;month&#39;, date &#39;2022-08-20&#39;) -- 결과 : 2022-08-01
select date_trunc(&#39;week&#39;, date &#39;2022-08-20&#39;) -- 결과 : 2022-08-15
</code></pre>
</li>
</ul>
<pre><code>
---

&gt; - [presto documentation](https://prestodb.io/docs/current/functions/datetime.html)
&gt; * https://towardsdatascience.com/date-time-functions-in-sql-1885e2cbdc1a

</code></pre>]]></description>
        </item>
        <item>
            <title><![CDATA[[Oracle]서브쿼리]]></title>
            <link>https://velog.io/@ena_hong/%EC%84%9C%EB%B8%8C%EC%BF%BC%EB%A6%AC</link>
            <guid>https://velog.io/@ena_hong/%EC%84%9C%EB%B8%8C%EC%BF%BC%EB%A6%AC</guid>
            <pubDate>Mon, 08 Nov 2021 14:42:46 GMT</pubDate>
            <description><![CDATA[<h1 id="서브쿼리란">서브쿼리란?</h1>
<ul>
<li>일반적인 쿼리(메인, 주 쿼리) 안에 있는 또 다른 쿼리 </li>
<li><blockquote>
<p>보조, 하위 쿼리 </p>
</blockquote>
</li>
<li>서브쿼리는 하나의 SELECT 문장으로, <strong>괄호로 둘러싸인 형태</strong> </li>
<li>메인 쿼리 기준으로 <strong>여러 개의 서브 쿼리 사용 가능</strong></li>
</ul>
<hr>
<h1 id="서브쿼리-종류">서브쿼리 종류</h1>
<ul>
<li>서브쿼리 위치에 따라
1) Select 절에 위치 : <strong>스칼라 서브쿼리</strong>
2) From 절에 위치 : <strong>인라인 뷰</strong>
3) Where 절에 위치 : <strong>중첩 서브쿼리</strong></li>
</ul>
<hr>
<h2 id="1-스칼라-서브쿼리---select-절에-위치">1. 스칼라 서브쿼리 - select 절에 위치</h2>
<ul>
<li>메인쿼리의 select 절에 위치</li>
<li>select 절에 위치하여 마치 하나의 <strong>컬럼</strong>이나 <strong>표현식</strong> 처럼 사용</li>
<li>서브쿼리에 Alias(별칭)을 주는 것이 일반적 </li>
<li><blockquote>
<p>하나의 컬럼역할을 하므로</p>
</blockquote>
</li>
<li>서브쿼리가 최종적으로 반환하는 로우 수와 <strong>컬럼(표현식) 수는 1개</strong></li>
<li><strong>서브쿼리 내에서 메인쿼리와 조인</strong>하는 것이 일반적(조인을 안하면 여러 건이 조회될 가능성이 많음)</li>
<li>조인과 비교해서 스칼라 서브쿼리는 성능상 좋지 않음</li>
<li>따라서 과도한 사용은 자제</li>
<li>다른 테이블에 있는 값을 가져올 때 사용하는 방법으로 조인과 스칼라 서브쿼리가 있음</li>
<li>Examples</li>
</ul>
<hr>
<pre><code class="language-sql">-- example #1
# 부서명 가져오기
  SELECT a.employee_id
          , a.first_name || &#39; &#39; || a.last_name
          , a.department_id
          ,(SELECT b.department_name # 컬럼 1개만 가져올 수 있음 or 문자열 연결 연산자로 결합되어 최종 반환값 1개가 되게 한다.
          FROM departments b 
          WHERE a.department_id = b.department_id) as dept_name
  FROM employees a 
  ORDER BY 1 ;</code></pre>
<p>  <img src="https://images.velog.io/images/ena_hong/post/4444c465-5f32-4896-87e7-5fa96dfbc50d/%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202022-02-17%20%E1%84%8B%E1%85%A9%E1%84%8C%E1%85%A5%E1%86%AB%2012.28.04.png" alt=""></p>
<p> 해석 : 178번 사원 -&gt; 조인에서는 누락되었지만 <strong>서브쿼리에서는 조회됨</strong></p>
<hr>
<pre><code class="language-sql">-- example #2
# 부서명, 나라이름 가져오기
SELECT a.employee_id
        , a.first_name || &#39; &#39; || a.last_name
        , a.department_id
        ,(SELECT b.department_name
         FROM departments b 
         WHERE a.department_id = b.department_id) as dept_name -- 부서명
         ,(SELECT d.country_name
        FROM departments b
        , locations c 
        , countries d
        WHERE a.department_id = b.department_id 
        AND b.location_id = c.location_id
        AND c.country_id = d.country_id) as country_name -- 나라이름
FROM employees a 
ORDER BY 1 ;</code></pre>
<hr>
<h2 id="2-인라인-뷰--from-절에-위치-⭐️">2. 인라인 뷰 -From 절에 위치 ⭐️</h2>
<ul>
<li>메인쿼리의 from 절에 위치</li>
<li>마치 하나의 테이블처럼 동작</li>
<li>서브쿼리가 최종 반환하는 로우와 컬럼, 표현식 수는 1개 이상 가능</li>
<li>서브쿼리에 대한 별칭(Alias)은 반드시 명시 </li>
<li>메인쿼리와 조인조건은 메인 쿼리의 WHERE(join ~ on) 절에서 처리가 일반적</li>
</ul>
<h3 id="인라인-뷰가-필요한-이유">인라인 뷰가 필요한 이유</h3>
<ul>
<li>기존 단일 테이블만 읽어서는 필요한 정보를 가져오기가 어려울 때 
예, <strong>특정 조건으로 집계한 결과와 조인 시 필요</strong></li>
<li>인라인 뷰의 쿼리가 여러 테이블을 조인해 읽어오는 경우가 많음</li>
<li>복잡한 쿼리의 경우, 쿼리 작성을 좀 더 직관적으로 사용하기 위해</li>
</ul>
<p>Examples</p>
<pre><code class="language-sql"># 1. 부서별 평균 급여를 서브쿼리에서 구한 뒤
# 2. 사원급여와 부서 평균 급여를 같이 조회
SELECT a.department_id
    , a.employee_id
    , a.first_name || &#39; &#39; || a.last_name as emp_name
    , a.salary
    , b.avg_salary
FROM employees a 
JOIN (SELECT department_id
            , avg(salary) as avg_salary)
     FROM employees 
     GROUP BY department_id) b 
  ON a.department_id = b.department_id
ORDER BY 1;</code></pre>
<hr>
<h2 id="3-중첩쿼리---where절에-위치">3. 중첩쿼리 - Where절에 위치</h2>
<ul>
<li>메인쿼리의 WHERE 절에 위치</li>
<li>서브쿼리가 조건절의 일부로 사용됨</li>
<li>서브쿼리 최종 반환 값과 메인쿼리 테이블의 특정 컬럼 <strong>값을 비교 시</strong> 사용</li>
<li>서브쿼리가 최종 반환하는 로우와 컬럼, 표현식 수는 1개 이상 가능 </li>
<li>조건절의 일부이므로 서브쿼리에 대한 별칭(alias) 사용 불가</li>
<li><strong>서브쿼리 내에서 메인쿼리와 조인</strong> 가능</li>
</ul>
<p>Examples</p>
<pre><code class="language-sql">-- example #1
# 1. employees 테이블에 있는 department_id 조회
# 2. departments 테이블에서 이 서브쿼리에서 반환하는 값이 포함되는 건만 조회 

SELECT *
FROM departments
WHERE department_id in (SELECT departmnet_id FROM employees);</code></pre>
<pre><code class="language-sql">-- example #2
# 1. job_id, salary 두 값을 동시에 비교
# 2. job_id별 최소 급여를 받는 사원이 조회됨

SELECT employee_id 
    , first_name || &#39; &#39; || last_name as emp_name
    , job_id
    , salary
WHERE (job_id,salary) IN (SELECT job_id, min_salary FROM jobs)
ORDER BY 1;</code></pre>
<pre><code class="language-sql">-- example #3
# 1. employees 테이블에서 자신이 속한 부서의 평균 급여보다 많이 받는 사원 조회

SELECT employee_id
    , department_id
    , first_name || &#39; &#39; || last_name as emp_name
    , salary
FROM employees a 
WHERE salary &gt; (SELECT AGV(salary) as avg_salary 
                FROM employees b
                WHERE a.department_id = b.department_id) -- 조인에 의해 group by 효과가 나타남</code></pre>
<hr>
<h2 id="4-with절">4. With절</h2>
<ul>
<li>서브쿼리의 일종 (인라인 서브쿼리)</li>
<li>하나의 서브쿼리를 또 다른 서브쿼리에서 참조하여 재사용 가능한 구문 </li>
<li>가독성이 좋음</li>
<li>WITH 절은 내부적으로 TEMP 테이블 스페이스를 사용함 
-&gt; TEMP 테이블스페이스에 각 서브쿼리 결과를 담아두고 있음 </li>
<li>과도한 WITH 절 사용 시, TEMP 테이블스페이스 공간을 점유해 성능에 좋지 않음 </li>
<li>일반적인 경우에는 서브쿼리를 사용하고, 서브쿼리 사용이 수월치 않은 경우 WITH 절 사용<h3 id="with절-구문">with절 구문</h3>
```sql</li>
<li><ul>
<li>with 별칭 as 다음에 서브쿼리 형태
WITH -- with는 한번만 명시, 서브쿼리는 여러 개 사용 가능
temp1 as (
SELECT a.department_id, a.department_name
 , b.location_id, b.street_address, b.city, b.country_id
FROM departments a 
JOIN locations b
on a.location_id = b.location_id
),
temp2 as (
SELECT b.department_id, b.department_name, b.street_address, b.city
 , a.country_name 
FROM countries a 
JOIN temp1 b -- 서브쿼리 내에서 다른 서브쿼리 참조 가능
on a.country_id = b.country_id
)</li>
</ul>
</li>
<li><ul>
<li>메인 쿼리 
SELECT a.employee_id
 , a.first_name || &#39; &#39; || a.last_name as emp_name
 , b.department_name
 , b.street_address
 , b.country_name 
FROM employees a 
JOIN temp2 b -- 메인 쿼리에서는 여러개의 서브쿼리 조인해 결과 조회 가능 
on a.department_id = b.department_id
ORDER BY 1;</li>
</ul>
</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[조인]]></title>
            <link>https://velog.io/@ena_hong/%EC%A1%B0%EC%9D%B8</link>
            <guid>https://velog.io/@ena_hong/%EC%A1%B0%EC%9D%B8</guid>
            <pubDate>Sat, 06 Nov 2021 08:43:34 GMT</pubDate>
            <description><![CDATA[<ul>
<li><p>RDBMS 특징 : <strong>중복 데이터 저장 회피</strong> 목적으로 데이터 성격에 따라 <strong>테이블 분리</strong> (예, 사원 테이블과, 부서 테이블, ... )</p>
</li>
<li><p>테이블만 읽어서는 필요한 정보가 부족</p>
</li>
<li><p>조인에 참여하는 테이블 간 같은 값을 가진 컬럼 -&gt; 조인 컬럼 </p>
</li>
<li><p>각 테이블의 조인 컬럼 명이 같을 필요는 없으나 동일하게 만드는 것이 좋음</p>
</li>
<li><p>조인 컬럼은 한 개 이상으로 구성될 수 있고  뷰(View)도 조인 가능</p>
</li>
<li><p>조인 방식에 따라 크게 내부조인, 외부조인으로 구분</p>
</li>
<li><p>일반 조인, ANSI 조인</p>
<h2 id="조인">조인</h2>
<h3 id="1-내부조인inner-join">1. 내부조인(INNER JOIN)</h3>
</li>
<li><p>가장 기본적인 조인 방신</p>
</li>
<li><p>조인 참여 테이블 간 <strong>조인 컬럼 값이 같은 건</strong>만 가져옴</p>
</li>
<li><p>실습1 : 2개 테이블 조인</p>
<pre><code class="language-sql">SELECT a.employee_id    --모든 컬럼은 테이블명.컬럼명 
    , a.first_name    --혹은 Alias명.컬럼명 형태로 사용
    , a.last_name
    , a.department_id
    , b.department_name
FROM employees a    --FROM절에 조인에 참여할 테이블 명시(콤마로 구분)
    , departments b    --각 테이블에 Alias(별칭) 주는 것이 좋음
WHERE a.department_id = b.department_id
            --WHERE절에서 조인조건과 일반조건 함께 사용 가능 
ORDER BY 1 ;</code></pre>
<p><img src="https://user-images.githubusercontent.com/85603111/140603071-749e95e6-18ea-46fa-90cc-f76a6929fbba.png" alt="image"></p>
<p>※178번 사원이 빠져 있음
-&gt; 사번이 178번의 department_id 값이 NULL이여서 조회되지 않음</p>
</li>
<li><p>실습2 : 테이블 4개 조인 
<img src="https://user-images.githubusercontent.com/85603111/140603413-555b35a0-46f7-4e32-9f34-e92da99ee5a3.png" alt="image"></p>
</li>
</ul>
<hr>
<h3 id="2-외부조인outer-join">2. 외부조인(OUTER JOIN)</h3>
<ul>
<li>조인 조건을 만족하는 것은 물론 만족하지 않는 데이터(로우) 까지 포함해 조회</li>
<li>조인조건을 만족하지 않는 a 테이블의 데이터까지 조회 시</li>
<li><blockquote>
<p>WHERE a.department_id = b.department_id <strong>(+)</strong></p>
</blockquote>
</li>
<li>조인조건을 만족하지 않는 b 테이블의 데이터까지 조회 시</li>
<li><blockquote>
<p>WHERE a.department_id*<em>(+) *</em>= b.department_id</p>
</blockquote>
</li>
<li>외부조인 시 조인조건에 (+)를 붙이는 것은 <strong>오라클 전용 문법임</strong></li>
<li>다른 DBMS에서는 (+) 기호 붙이면 오류 발생</li>
<li>조인 조건 양쪽에 (+) 기호 붙일 수 없음</li>
</ul>
<hr>
<h4 id="-외부-조인은-왜-사용할까">※ 외부 조인은 왜 사용할까?</h4>
<ul>
<li>테이블 설계가 제대로 되어 있고, 데이터가 정확히 입력되어 있다면 굳이 외부 조인을 사용할 필요가 없음</li>
<li>하지만 현실은 테이블 설계를 완벽히 할 수 없음</li>
<li>애초에 제대로 설계했더라도 업무가 변경되면 로직 수정이 필요</li>
<li>데이터 입력 시 오류로 인해 잘못된 데이터 입력, 누락 데이터 발생</li>
<li>EX) 178번 Kimberely Grant는 부서번호가 없음</li>
<li>부서가 없는 사원 일까?</li>
<li>설사 부서 발령이 안되더라도 미발령부서 정보를 부서 테이블에 등록하는 것이 정상적</li>
</ul>
<hr>
<h4 id="-기호를-사용하는-오라클-외부조인-제약사항">(+) 기호를 사용하는 오라클 외부조인 제약사항</h4>
<ul>
<li>조인 컬럼이 여러개일 경우, 조인 조건에서 (+) 기호를 모두 붙여야 제데로 조회됨
Ex) where a.col1 = b.col1(+)<pre><code>  and a.col2 = b.col2(+)</code></pre></li>
<li>조인 조건 양쪽에 (+) 기호 붙일 수 없음
<img src="https://user-images.githubusercontent.com/85603111/140604024-cad0a5d4-f72a-427f-9fe1-1b38b6f5c50b.png" alt="image"></li>
</ul>
<p><img src="https://user-images.githubusercontent.com/85603111/140604059-545bfb21-7c52-46c8-9a84-a0f4ad9bffb2.png" alt="image"></p>
<hr>
<h2 id="ansi-조인">ANSI 조인</h2>
<ul>
<li>ANSI 표준 문법으로 작성한 조인 방법</li>
<li>내부조인 : INNER JOIN</li>
<li>외부조인 : LEFT OUTER JOIN/  RIGHT OUTER JOIN/  FULL OUTER JOIN</li>
<li>FULL OUTER JOIN은 ANSI 문법으로만 구현 가능</li>
<li><strong>ANSI 문법은 다른DBMS에서도 사용가능</strong> -&gt;(+)기호는 오라클에서만 사용</li>
<li><strong>조인 조건 절</strong>을 WHERE 절이 아닌 <strong>FROM 절에 기술</strong> </li>
<li><strong>조인 조건은 ON 다음에</strong> 기술<h3 id="1-내부조인inner-join-1">1. 내부조인(INNER JOIN)</h3>
</li>
<li>기본문법
```sql
SELECT a.employee_id
  , a.department_id<pre><code>  , b.departmnet_name</code></pre>FROM employees a
INNER JOIN deparments b 
  on a.department_id = b.department_id
ORDER BY a.department_id ;</li>
<li><ul>
<li>INNER 생략 가능
```<h3 id="2-외부조인leftrightfull-outer-join">2. 외부조인(LEFT/RIGHT/FULL OUTER JOIN)</h3>
<h4 id="left-outer-join">LEFT OUTER JOIN</h4>
```sql
SELECT a.employee_id
 , a.department_id<pre><code> , b.departmnet_name</code></pre>FROM employees a
LEFT OUTER JOIN deparments b 
 on a.department_id = b.department_id
ORDER BY a.department_id ;</li>
</ul>
</li>
<li><ul>
<li>OUTER 생략 가능
```<h4 id="full-outer-join">FULL OUTER JOIN</h4>
```sql
SELECT a.employee_id
 , a.department_id<pre><code> , b.departmnet_name</code></pre>FROM employees a
FULL OUTER JOIN deparments b 
 on a.department_id = b.department_id
ORDER BY a.department_id ;</li>
</ul>
</li>
<li><ul>
<li>OUTER 생략 가능<pre><code></code></pre></li>
</ul>
</li>
</ul>
<hr>
<h2 id="일반조인-vs-ansi-조인">일반조인 VS ANSI 조인</h2>
<ul>
<li><p>일반 조인을 사용해야 할까? 아니면 ANSI 조인을 써야 할까?
  -&gt; 편한 것으로 사용
  -&gt;But 요즘 트렌드는 ANSI 조인 이다.
  -&gt; 따라서 <strong>ANSI 추천</strong></p>
</li>
<li><p>내부조인의 경우 일반 조인이(WHERE 절에 조인조건 기술) 가독성 측면에서 좋음</p>
</li>
<li><p>외부조인
  -&gt; (+) 는 오라클에서만 사용 가능</p>
</li>
<li><blockquote>
<p>ANSI 가 가독성이 더 좋음</p>
</blockquote>
</li>
<li><blockquote>
<p>FULL OUTER JOIN은 ANSI 문법만 가능  </p>
</blockquote>
</li>
</ul>
<hr>
<h2 id="셀프-조인self-join">셀프 조인(SELF JOIN)</h2>
<ul>
<li>자기 자신과 조인</li>
<li>동일한 테이블 끼리 조인<pre><code class="language-sql">SELECT  a.employee_id
  , a.first_name || &#39; &#39; || a.last_name
      , a.manager_id
      ,b.first_name || &#39; &#39; || b.last_name
FROM employees a
INNER JOIN emplyees b 
  ON a.manager_id = b.employee_id
ORDER BY 1 ;</code></pre>
</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[[Oracle]집합쿼리]]></title>
            <link>https://velog.io/@ena_hong/%EC%A7%91%ED%95%A9%EC%BF%BC%EB%A6%AC</link>
            <guid>https://velog.io/@ena_hong/%EC%A7%91%ED%95%A9%EC%BF%BC%EB%A6%AC</guid>
            <pubDate>Fri, 05 Nov 2021 15:50:18 GMT</pubDate>
            <description><![CDATA[<ul>
<li>하나의 SELECT 문장이 반환한 결과를 한 집합으로 보고, 한 개 이상의 SELECT 문장이 집합 연산자로 연결된 형태 </li>
<li>여러 개의 SELECT 문이 연결되어 최종적으로는 하나의 결과 집합이 만들어짐</li>
<li><strong>UNION, UNION ALL, INTERSECT, MINUS</strong> 4개 연산자 존재 </li>
<li>기본 형태<pre><code class="language-sql">SELECT ...
FROM ...
WHERE ...
집합연산자--(UNION, UNION ALL, INTERSECT, MINUS)
SELECT ...
FROM...
WHERE ...
ORDER BY -- 생략 가능</code></pre>
</li>
<li>제한 사항</li>
<li>SELECT 절의 컬럼 수, 데이터 타입은 동일★</li>
<li>최종 반환되는 컬럼명은 맨 첫 SELECT 절의 컬럼</li>
<li>ORDER BY절은 맨 마지막 SELECT 문장에서만 붙일 수 있음</li>
</ul>
<hr>
<h3 id="1-union합집합">1. UNION(합집합)</h3>
<ul>
<li>두 문장의 SELECT 절에 명시하는 컬럼 수, 데이터 타입은 동일해야 함 </li>
<li>조회된 결과의 컬럼명은 첫 번째 SELECT 문장의 컬럼명으로 보임 </li>
<li>ORDER BY 절은 맨 마지막에 붙일 수 있음 (생략 가능)</li>
<li>각 결과 집합에서 조회된 중복 값은 1번만 조회됨
<img src="https://user-images.githubusercontent.com/85603111/140539778-8507f6f3-40ed-4317-a438-af41868d4af2.png" alt="image"></li>
</ul>
<hr>
<h3 id="2-union-all">2. UNION ALL</h3>
<ul>
<li>UNION과 동일하나 <strong>중복값도 모두 조회</strong>됨</li>
<li>나머지 내용은 UNION과 동일
<img src="https://user-images.githubusercontent.com/85603111/140540021-b957df6c-01fc-4a3d-a760-9fe97a1e7af6.png" alt="image"></li>
</ul>
<hr>
<h3 id="3-intersect">3. INTERSECT</h3>
<ul>
<li>두 집합의 공통 원소를 가져오는 <strong>교집합</strong> 개념
<img src="https://user-images.githubusercontent.com/85603111/140539877-275004d4-2e41-4013-bdeb-2a10d65677cb.png" alt="image"></li>
</ul>
<hr>
<h3 id="4-minus">4. MINUS</h3>
<ul>
<li>선두 집합에만 있는 원소를 가져오는 <strong>차집합</strong> 개념
<img src="https://images.velog.io/images/ena_hong/post/72bb55cd-58dd-4800-b5dc-227646a41c09/image.png" alt=""></li>
</ul>
<hr>
<h3 id="examples">Examples</h3>
<ol>
<li>Union </li>
</ol>
<p><img src="https://user-images.githubusercontent.com/85603111/140541014-d608d3ec-36c6-425d-968b-4aa85ea2b57f.png" alt="image"></p>
<hr>
<p><img src="https://user-images.githubusercontent.com/85603111/140541319-481c2830-1ef9-417d-93f2-f446d7272509.png" alt="image"></p>
<hr>
<p><img src="https://user-images.githubusercontent.com/85603111/140541613-28417508-40b5-41d0-b458-35901f80507f.png" alt="image"></p>
<hr>
<h3 id="집합-연산자는-언제-사용할까">집합 연산자는 언제 사용할까?</h3>
<ul>
<li>UNION(ALL)<ol>
<li>구조가 다른 여러 테이블에서 동일한 형태의 데이터를 추출하는 경우</li>
</ol>
</li>
<li>테이블 옆으로 합친 후 집계<ol start="2">
<li>컬럼을 로우 형태로 전환해 조회할 경우</li>
</ol>
</li>
<li>테이블 쪼갠 후 테이블 아래로 합체</li>
</ul>
<hr>
<h4 id="1-구조가-다른-여러-테이블에서-동일한-형태의-데이터를-추출하는-경우">1. 구조가 다른 여러 테이블에서 동일한 형태의 데이터를 추출하는 경우</h4>
<p>-테이블 옆으로 합친 후 집계</p>
<p>ex. 계획 대비 실적은?(예산 테이블 + 매출 테이블)
<img src="https://user-images.githubusercontent.com/85603111/140543393-7efadeb7-db3d-4deb-b499-c1ebe2c71320.png" width=400></p>
<p><img src="https://user-images.githubusercontent.com/85603111/140544162-af1ae434-7175-4e97-8a36-716828a70d02.png" alt="image"></p>
<p><img src="https://user-images.githubusercontent.com/85603111/140545357-c0fe01da-8e54-4054-9cec-b8e60c2fc654.png" alt="image"></p>
<p><img src="https://user-images.githubusercontent.com/85603111/140545805-6cde63a5-8875-4675-9198-aadd6d033714.png" alt="image"></p>
<p>-&gt; 파란색 부분은 SUB QUERY로 뒤에서 배움
-&gt; 주의 : 나눗셈 시 항상 분모에 0이 들어갈것을 고려해서 분모에 대한 0처리를 해주어야 함</p>
<hr>
<h4 id="2-컬럼을-로우로">2. 컬럼을 로우로</h4>
<p>-테이블 쪼갠 후 테이블 아래로 합체
<img src="https://user-images.githubusercontent.com/85603111/140546311-454ce0b5-e3ac-45f7-a062-590c3ce7bedd.png" alt="image"></p>
<p><img src="https://user-images.githubusercontent.com/85603111/140547716-ccbd14a6-16a8-45ab-b27d-09314c67eb6c.png" alt="image"></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[Oracle]집계쿼리]]></title>
            <link>https://velog.io/@ena_hong/%EC%A7%91%EA%B3%84%EC%BF%BC%EB%A6%AC</link>
            <guid>https://velog.io/@ena_hong/%EC%A7%91%EA%B3%84%EC%BF%BC%EB%A6%AC</guid>
            <pubDate>Fri, 05 Nov 2021 14:29:48 GMT</pubDate>
            <description><![CDATA[<ul>
<li><strong>Group by</strong> 절과 <strong>집계함수</strong>로 구성된다.</li>
<li>특정 항목별 최소, 최대, 평균 값 등 기본적인 데이터 분석에 사용됨</li>
<li>집계함수 단독으로 사용 가능하나, group by 절의미있는 결과를 얻으려면 같이 사용</li>
<li>집계함수의 결과값으로 조건을 주려면 <strong>HAVING 절</strong>을 사용한다.</li>
<li>집계함수 없이 GROUP BY 절만 사용하면 원하는 컬럼이나 표현식의 고유한 값을 얻을 수 있는데, <strong>DISTINCT 키워드를 사용하</strong>면 GROUP BY 절 없이 동일한 결과를 얻을 수 있다.</li>
</ul>
<hr>
<h3 id="group-by-절">Group by 절</h3>
<ul>
<li>기본형태 <pre><code class="language-sql">SELECT expr1, expr2, ...
  FROM ...
WHERE ...
GROUP BY expr1, expr2, ...
ORDER BY ... ;</code></pre>
</li>
<li>WHERE 절과 ORDER BY 절 사이에 위치 ★</li>
<li>GROUP BY 절에 기술한 컬럼, 표현식 이외의 항목은 SELECT 절에 명시 불가 단, 집계 함수는 가능 ★</li>
<li>GROUP BY 절과 집계 함수를 함께 사용해야 의미 있는 결과를 도출</li>
<li>Example<pre><code class="language-sql">SELECT TO_CHAR(hire_date,&#39;yyyy&#39;) AS HIRE_YEAR
  FROM employees 
GROUP BY TO_CHAR(hire_date,&#39;yyyy&#39;) ;</code></pre>
</li>
<li><blockquote>
<p>입사년도별 집계를 하므로 총 죄회 되는 로우 수는 8개 </p>
</blockquote>
</li>
<li><blockquote>
<p>GROUP BY 절에는 SELECT 절에 기술한 형태 그대로 사용해야 함 (별칭은 기술하면 안됨) ★</p>
</blockquote>
</li>
</ul>
<hr>
<h3 id="집계-함수">집계 함수</h3>
<ul>
<li>집계 함수는 where 절에 사용 불가★<h4 id="countexpr---expr의-전체-개수-반환">COUNT(expr) - expr의 전체 개수 반환</h4>
</li>
<li>지정 컬럼에 NULL 값이 있을 경우 건수로 세지 않는다.</li>
<li>expr은 컬럼을 포함한 표현식, 보통 * 사용</li>
<li>매개변수 &#39; * &#39;는 COUNT 함수에서만 사용<h4 id="maxexpr---expr의-최대값-반환">MAX(expr) - expr의 최대값 반환</h4>
<h4 id="min--expr----expr의-최솟값-반환">MIN ( expr ) - expr의 최솟값 반환</h4>
<h4 id="sum--expr----expr의-합계-반환">SUM ( expr ) - expr의 합계 반환</h4>
<h4 id="avg--expr----expr의-평균값-반환">AVG ( expr ) - expr의 평균값 반환</h4>
<h4 id="variance--expr----expr의-분산-반환">VARIANCE ( expr ) - expr의 분산 반환</h4>
<h4 id="stddev--expr----expr의-표준편차-반환">STDDEV ( expr ) - expr의 표준편차 반환</h4>
</li>
<li>Example<pre><code class="language-sql">SELECT COUNT(*) AS total_cnt
  , MIN(salary) as min_salary 
  , MAX(salary) as max_salary
  FROM employees ;</code></pre>
</li>
<li><blockquote>
<p>employees 테이블의 전체 로우 건 수</p>
</blockquote>
</li>
<li><blockquote>
<p>salary 컬럼의 최소와 최댓값</p>
</blockquote>
</li>
</ul>
<hr>
<h3 id="having-절">HAVING 절</h3>
<ul>
<li>집계 쿼리에서 집계 함수 반환 값에 대한 조건을 걸 때 사용
예) 한 반에서 과목별 평균 점수가 60점 이상인 과목을 조회 </li>
<li>집계 쿼리로 평균 값 산출 : AVG(점수)  </li>
<li>WHERE AVG(점수) &gt;= 60  X </li>
<li>HAVING AVG(점수) &gt;= 60  O</li>
</ul>
<hr>
<h3 id="distinct">DISTINCT</h3>
<ul>
<li>기본형태<pre><code class="language-sql">SELECT DISTINCT expr1, expr2 … 
FROM … </code></pre>
</li>
<li>DISTINCT 뒤에 명시한 표현식(컬럼)의 고유한 값을 조회 </li>
<li>집계 함수 없이 GROUP BY 절을 사용한 것과 동일한 효과</li>
<li>COUNT(DISTINCT 컬럼1) -&gt; 해당 컬럼의 고유값의 수 반환.</li>
<li>Examples<pre><code class="language-sql">SELECT job_id 
FROM employees
GROUP BY job_id; 
</code></pre>
</li>
</ul>
<p>SELECT DISTINCT job_id 
FROM employees;</p>
<pre><code>-&gt; 두 결과값 같음
***
### Examples 
-- employees 테이블의 jod_id별 건수, salary컬럼의 최소와 최댓값
```sql
SELECT job_id
    , COUNT(*) AS total_cnt
    , MIN(salary) AS min_salary
    , MAX(salary) AS max_salary
FROM employees
GROUP BY job_id
ORDER BY job_id ;</code></pre><p>-- 2004년 이후 입사 년도와 부서별 총 인원수와 급여 총액, 급여 평균</p>
<pre><code class="language-sql">select to_char(hire_date, &#39;yyyy&#39;) as 입사년도
    , department_id as 부서
    , count(*) as 총인원수
    , sum(salary) as 급여총액
    , round(avg(salary),0) as 급여평균 --round 함수로 소숫점 제거
from employees
where to_char(hire_date, &#39;yyyy&#39;) &gt;=&#39;2004&#39;
group by to_char(hire_date, &#39;yyyy&#39;), department_id
order by 1,2;</code></pre>
<p>-- 입사년도와 부서별 총 인원수, 급여 총액, 급여 평균이 5000이상인 값 조회 </p>
<pre><code class="language-sql">select to_char(hire_date, &#39;yyyy&#39;) as 입사년도
    , department_id as 부서
    , count(*) as 총인원수
    , sum(salary) as 급여총액
    , round(avg(salary),0) as 급여평균 --round 함수로 소숫점 제거
from employees
group by to_char(hire_date, &#39;yyyy&#39;), department_id
Having round(avg(salary),0) &gt;=5000 --집계함수 조건은 Having절 사용★
order by 1,2;</code></pre>
<p>-- 보호소에서는 몇 시에 입양이 가장 활발하게 일어나는지 알아보려 합니다. 09:00부터 19:59까지, 각 시간대별로 입양이 몇 건이나 발생했는지 조회하는 SQL문을 작성해주세요. 이때 결과는 시간대 순으로 정렬해야 합니다.</p>
<pre><code class="language-sql">SELECT to_char(datetime, &#39;hh24&#39;) AS HOUR
    , count(*) AS COUNT
FROM animal_outs
WHERE to_char(datetime, &#39;hh24&#39;) &gt;=&#39;09&#39;
    AND to_char(datetime, &#39;hh24&#39;) &lt;&#39;20&#39;
GROUP BY to_char(datetime, &#39;hh24&#39;)
ORDER BY 1;</code></pre>
]]></description>
        </item>
        <item>
            <title><![CDATA[회귀분석]]></title>
            <link>https://velog.io/@ena_hong/%ED%9A%8C%EA%B7%80%EB%B6%84%EC%84%9D</link>
            <guid>https://velog.io/@ena_hong/%ED%9A%8C%EA%B7%80%EB%B6%84%EC%84%9D</guid>
            <pubDate>Tue, 07 Sep 2021 08:59:55 GMT</pubDate>
            <description><![CDATA[<blockquote>
<p><a href="https://www.youtube.com/watch?v=__SRJAPvR_k&amp;list=PLalb9l0_6WApDZGksoHt474fy1U35Bv-T&amp;index=5">https://www.youtube.com/watch?v=__SRJAPvR_k&amp;list=PLalb9l0_6WApDZGksoHt474fy1U35Bv-T&amp;index=5</a></p>
</blockquote>
<h2 id="회귀분석이란">회귀분석이란?</h2>
<p><img src="https://user-images.githubusercontent.com/85603111/131494427-5f02684b-dbfc-46e3-b0eb-03b7adff31f5.png" alt="image"></p>
<p><img src="https://user-images.githubusercontent.com/85603111/131494851-b2d30e00-1e5d-4247-a742-cb183fe02a80.png" alt="image"></p>
<p><img src="https://user-images.githubusercontent.com/85603111/131495360-d58eccd2-a03d-4b63-9ac3-efdb79717662.png" alt="image"></p>
<p><img src="https://user-images.githubusercontent.com/85603111/131495659-e217a74c-71cc-4321-8296-0793f0f3ce66.png" alt="image"></p>
<p><img src="https://user-images.githubusercontent.com/85603111/131495814-f5001a19-9840-4bb4-9ce6-e9bf8112eb85.png" alt="image"></p>
<h2 id="회귀분석-결과표-해석">회귀분석 결과표 해석</h2>
<h3 id="단순선형-회귀분석">단순선형 회귀분석</h3>
<p><img src="https://user-images.githubusercontent.com/85603111/131496098-40d9ef3e-e7f6-4e88-98f5-6282a8c15643.png" alt="image"></p>
<p><img src="https://user-images.githubusercontent.com/85603111/131496569-f9fbdf62-210b-4c06-bbb4-8001b15017de.png" alt="image"></p>
<ul>
<li>SE : 표준오차  </li>
</ul>
<p><img src="https://user-images.githubusercontent.com/85603111/131496874-0eda4b3b-6fbb-4b33-b0e9-26e0a50b8c7f.png" alt="image"></p>
<p><img src="https://user-images.githubusercontent.com/85603111/131497034-7c3ea49d-876f-49a3-b9c8-1b6c448590c6.png" alt="image"></p>
<p><img src="https://user-images.githubusercontent.com/85603111/131497167-074b488d-0485-4019-b506-08cc2d527326.png" alt="image"></p>
<hr>
<h2 id="회귀분석과-표준오차">회귀분석과 표준오차</h2>
<p><img src="https://user-images.githubusercontent.com/85603111/131497504-3a5bdf3d-4adb-42f5-9225-f90490e0f387.png" alt="image"></p>
<p><img src="https://user-images.githubusercontent.com/85603111/131497571-cf760f10-e52c-4309-a777-5230e426a672.png" alt="image"></p>
<p><img src="https://user-images.githubusercontent.com/85603111/131497986-6451f793-a7bf-4865-b922-bade23342e81.png" alt="image"></p>
<p><img src="https://user-images.githubusercontent.com/85603111/131498190-f3c137ab-481c-41d5-bece-54f1db2a1b5a.png" alt="image"></p>
<p><img src="https://user-images.githubusercontent.com/85603111/131498265-7c7da102-ca37-4daf-95d4-c8c9844fa1a4.png" alt="image"></p>
<p><img src="https://user-images.githubusercontent.com/85603111/131498420-c39f58ce-bb5c-42ce-9a2d-8645950c6397.png" alt="image"></p>
<p><img src="https://user-images.githubusercontent.com/85603111/131498529-acd0b3f7-be10-406a-bc85-038839ad8b7b.png" alt="image"></p>
<hr>
<h2 id="회귀분석과-t-test">회귀분석과 t-test</h2>
<p><img src="https://user-images.githubusercontent.com/85603111/131499571-ffdbee59-e40e-4b63-8a70-e39779f4e361.png" alt="image"></p>
<p><img src="https://user-images.githubusercontent.com/85603111/131500072-d0bdec17-e8ba-4be0-99e6-6d6b6bda73ea.png" alt="image"></p>
<p><img src="https://user-images.githubusercontent.com/85603111/131500247-5974217c-4411-4107-92c8-dc029f7d2656.png" alt="image"></p>
<p><img src="https://user-images.githubusercontent.com/85603111/131500707-2d90968d-c956-4662-ae93-16c214577254.png" alt="image"></p>
<p><img src="https://user-images.githubusercontent.com/85603111/131500861-54afa746-bfcc-4915-b1ef-45fc33f440a9.png" alt="image"></p>
<p><img src="https://user-images.githubusercontent.com/85603111/131500934-2cd2f7f4-faa2-42dc-a838-34807faa7b11.png" alt="image"></p>
<ul>
<li>기울기가 0 이므로 아무 의미가 없음</li>
<li>따라서 회귀분석 전에 산포도(scatterplot)을 먼저 그려봐야함</li>
</ul>
<p><img src="https://user-images.githubusercontent.com/85603111/131501116-53e681ac-916a-4882-bc9f-e093725e9b4a.png" alt="image"></p>
<p><img src="https://user-images.githubusercontent.com/85603111/131501300-3a9ea801-de95-45a3-b67a-6590e7819350.png" alt="image"></p>
<p><img src="https://user-images.githubusercontent.com/85603111/131501415-084e4185-64fd-4e96-a7ce-29c0dd245435.png" alt="image"></p>
<p><img src="https://user-images.githubusercontent.com/85603111/131501615-a4687533-2255-4368-8077-4ee3045c5417.png" alt="image"></p>
<hr>
<h2 id="r2를-어떻게-해석해야-할까">R2를 어떻게 해석해야 할까</h2>
<p><img src="https://images.velog.io/images/ena_hong/post/e2d18b4f-123d-4e55-9f70-2fe6567a516e/image.png" alt=""></p>
<p><img src="https://user-images.githubusercontent.com/85603111/131502273-6366c61a-745d-45db-bbea-bc7a843c6145.png" alt="image"></p>
<ul>
<li>R2가 높을수록 종속변수의 변수에 대한 설명력이 크다는 뜻 </li>
</ul>
<p><img src="https://user-images.githubusercontent.com/85603111/131502548-9f0baf2a-98c4-48e1-9790-d0bd5cf95365.png" alt="image"></p>
<p><img src="https://user-images.githubusercontent.com/85603111/131502969-7a1e8f13-a827-4e6b-9b18-5ef1f90c8f91.png" alt="image"></p>
<p><img src="https://user-images.githubusercontent.com/85603111/131503064-a6f8081b-d473-46cd-80be-36ad0628d06f.png" alt="image"></p>
<p><img src="https://user-images.githubusercontent.com/85603111/131503460-dc81b13c-84af-4f7b-a299-3b3f89d72200.png" alt="image"></p>
<ul>
<li><p>이경우는 잔차의 패턴이 일정하지 않고 랜덤함 -&gt; 랜덤하게 분포
<img src="https://user-images.githubusercontent.com/85603111/131503746-06ae7de7-5581-49b4-9bef-b7856acf86c0.png" alt="image"></p>
</li>
<li><p>이 경우는 패턴이 있음  -&gt; 랜덤 분포x ( R2가 아무리 높아도 의미 없음)
<img src="https://user-images.githubusercontent.com/85603111/131503943-1e50034b-af06-4410-b86a-a055878f45a9.png" alt="image"></p>
</li>
</ul>
<p><img src="https://user-images.githubusercontent.com/85603111/131504139-e1c299b0-6099-4e4c-ae45-5d7aa6a8e79a.png" alt="image"></p>
<p><img src="https://user-images.githubusercontent.com/85603111/131504476-67a2f083-e697-4a5d-972a-f5d1b6045c76.png" alt="image"></p>
<p><img src="https://user-images.githubusercontent.com/85603111/131504541-7a49a246-7aca-48a1-9c45-b129a2feb996.png" alt="image"></p>
<hr>
<h2 id="회귀분석의-표준화계수">회귀분석의 표준화계수</h2>
<p><img src="https://user-images.githubusercontent.com/85603111/131625375-8e8209ee-555b-4dd3-af05-ec0c49ddcbd2.png" alt="image"></p>
<p><img src="https://user-images.githubusercontent.com/85603111/131625619-8908e9bf-6215-4d51-9286-df6874addeff.png" alt="image"></p>
<p><img src="https://user-images.githubusercontent.com/85603111/131626013-d082717d-ac1c-474e-b364-53dceac71ce4.png" alt="image"></p>
<p><img src="https://user-images.githubusercontent.com/85603111/131641248-34cf8ed9-50d3-4f74-b0af-8633e0400e73.png" alt="image"></p>
<p><img src="https://user-images.githubusercontent.com/85603111/131641551-536a00d4-0103-4570-a5a0-bdf7769458ca.png" alt="image"></p>
<p><img src="https://user-images.githubusercontent.com/85603111/131641662-6d4df356-038a-4bf5-a841-8855b0239fee.png" alt="image"></p>
<p><img src="https://user-images.githubusercontent.com/85603111/131641850-7cb06181-9e64-46ae-93f4-95395bfacac5.png" alt="image"></p>
<p><img src="https://images.velog.io/images/ena_hong/post/bf4d6fb0-c1b0-4dea-9644-c2051c746782/image.png" alt=""></p>
<hr>
<h2 id="더미변수의-활용">더미변수의 활용</h2>
<p><img src="https://user-images.githubusercontent.com/85603111/131642242-14a1e3e8-5582-469b-b5e3-85a0e8c1d375.png" alt="image"></p>
<p><img src="https://user-images.githubusercontent.com/85603111/131642359-2b48871f-b7a6-4548-b889-f930ca0518be.png" alt="image"></p>
<p><img src="https://user-images.githubusercontent.com/85603111/131642916-7bfe1a37-493b-4eed-83a5-7196afca9c3c.png" alt="image"></p>
<p><img src="https://user-images.githubusercontent.com/85603111/131643043-18ece556-77a9-41a5-bb61-ee9bb376c0d0.png" alt="image"></p>
<p><img src="https://user-images.githubusercontent.com/85603111/131644390-98de4088-649e-4323-8dbb-d763d602fcf5.png" alt="image"></p>
<p><img src="https://user-images.githubusercontent.com/85603111/131655657-865a0a47-ce66-44e1-a6dd-b70bf57c152f.png" alt="image"></p>
<p><img src="https://user-images.githubusercontent.com/85603111/131655891-d5d47615-c941-42de-b608-9cffa91c9fd5.png" alt="image"></p>
<p><img src="https://user-images.githubusercontent.com/85603111/131655990-5a90063c-5500-46a8-80bd-1a670e2e1f37.png" alt="image"></p>
<p><img src="https://user-images.githubusercontent.com/85603111/131656133-5b27e168-46ac-4ec7-91fd-744ed0eb2a14.png" alt="image"></p>
<p><img src="https://user-images.githubusercontent.com/85603111/131656216-dc485c1f-94ab-4b07-82fc-fa6b15adde6e.png" alt="image"></p>
<hr>
<h2 id="다중공산성이란-무엇인가">다중공산성이란 무엇인가</h2>
<p><img src="https://user-images.githubusercontent.com/85603111/131656352-fbbb6505-4f33-4f47-8802-f7198c051e32.png" alt="image"></p>
<p><img src="https://user-images.githubusercontent.com/85603111/131657440-bab8b4cf-7b38-40ba-b1db-71a384cdd5e7.png" alt="image"></p>
<p><img src="https://user-images.githubusercontent.com/85603111/131658285-9632bceb-da7a-45a0-b5f1-95fd6f00074e.png" alt="image"></p>
<p><img src="https://user-images.githubusercontent.com/85603111/131658712-afd01c1b-dbcd-4ad1-86e7-c11d7e3a2515.png" alt="image"></p>
<p><img src="https://user-images.githubusercontent.com/85603111/131658882-ec123cf0-6fc0-4423-85e4-8ec78a011ab5.png" alt="image"></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[카이제곱 검정]]></title>
            <link>https://velog.io/@ena_hong/%EC%B9%B4%EC%9D%B4%EC%A0%9C%EA%B3%B1-%EA%B2%80%EC%A0%95</link>
            <guid>https://velog.io/@ena_hong/%EC%B9%B4%EC%9D%B4%EC%A0%9C%EA%B3%B1-%EA%B2%80%EC%A0%95</guid>
            <pubDate>Thu, 26 Aug 2021 12:12:45 GMT</pubDate>
            <description><![CDATA[<p><img src="https://user-images.githubusercontent.com/85603111/130913802-7bea9089-0e40-45cc-9216-1fb6f00db741.png" alt="image"></p>
<p><img src="https://user-images.githubusercontent.com/85603111/130914051-2df14242-fa77-411c-b870-233aafaa5879.png" alt="image"></p>
<p><img src="https://user-images.githubusercontent.com/85603111/130915279-8fc6510d-d1f8-4b61-b7b5-ff25e772553c.png" alt="image"></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[Two-way ANOVA]]></title>
            <link>https://velog.io/@ena_hong/Two-way-ANOVA</link>
            <guid>https://velog.io/@ena_hong/Two-way-ANOVA</guid>
            <pubDate>Thu, 26 Aug 2021 06:33:15 GMT</pubDate>
            <description><![CDATA[<blockquote>
<p><a href="https://www.youtube.com/watch?v=Z-wrgf7QfCM&amp;list=PLalb9l0_6WAr71hsuLImTs-Zhss5-hbHU">https://www.youtube.com/watch?v=Z-wrgf7QfCM&amp;list=PLalb9l0_6WAr71hsuLImTs-Zhss5-hbHU</a></p>
</blockquote>
<p><img src="https://user-images.githubusercontent.com/85603111/130746767-a065e221-8a08-45f8-88a8-14fb7b18abde.png" alt="image"></p>
<h2 id="two-way-anova란">Two-way ANOVA란?</h2>
<p><img src="https://user-images.githubusercontent.com/85603111/130747012-497cab24-78cf-429e-bb81-8eed3728336f.png" alt="image"></p>
<p><img src="https://user-images.githubusercontent.com/85603111/130747454-377fd951-5e0d-4203-b053-452ed88db0d6.png" alt="image"></p>
<h3 id="interaction상호작용교호작용-이란">interaction(상호작용/교호작용) 이란?</h3>
<p><img src="https://user-images.githubusercontent.com/85603111/130747755-2e7440b8-328b-4def-8c3c-c17fa940787d.png" alt="image"></p>
<p><img src="https://user-images.githubusercontent.com/85603111/130748189-c4aa79e2-54f2-406e-8dca-cfe4b903b2f7.png" alt="image"></p>
<p><img src="https://images.velog.io/images/ena_hong/post/280d44c1-c1de-4548-bf96-6b39c9ba8111/image.png" alt=""></p>
<ul>
<li><p>case1 
<img src="https://user-images.githubusercontent.com/85603111/130761597-cb3e10f8-7430-4173-a4be-f8290c814380.png" alt="image"></p>
</li>
<li><p>case2
<img src="https://user-images.githubusercontent.com/85603111/130762378-dc22f5e2-2097-4846-b73a-338445ed379e.png" alt="image"></p>
</li>
<li><p>case3
<img src="https://user-images.githubusercontent.com/85603111/130780515-2e9266d1-cc00-4f2b-9d16-4e1fee420b76.png" alt="image"></p>
</li>
<li><p>case4
<img src="https://user-images.githubusercontent.com/85603111/130780965-05f45b13-e17b-4546-9742-93aafa9a1bba.png" alt="image"></p>
</li>
<li><p>case5
<img src="https://user-images.githubusercontent.com/85603111/130781139-5cec2152-2395-49fc-8400-6b072c5fb4cd.png" alt="image"></p>
</li>
<li><p>case6
<img src="https://user-images.githubusercontent.com/85603111/130782883-273be7a6-bd01-42df-a567-c4182cefeabc.png" alt="image"></p>
</li>
</ul>
<ul>
<li><p>case7
<img src="https://images.velog.io/images/ena_hong/post/afc7b24e-c217-4414-a358-d1b1b8c61df7/image.png" alt=""></p>
</li>
<li><p>case8
<img src="https://user-images.githubusercontent.com/85603111/130783148-617c4ea1-15bd-4ab5-ad5c-3ffcf42e18e0.png" alt="image"></p>
</li>
<li><p>case9
<img src="https://user-images.githubusercontent.com/85603111/130783542-95aeaf5f-7a86-40fd-a712-da0261ca3f16.png" alt="image"></p>
</li>
</ul>
<p><img src="https://user-images.githubusercontent.com/85603111/130783664-4b68c46d-0700-44b6-9851-54db483d1f8d.png" alt="image"></p>
<hr>
<h2 id="two-way-anova-전에-알아야-할-것들">two-way ANOVA 전에 알아야 할 것들</h2>
<p><img src="https://user-images.githubusercontent.com/85603111/130790091-d026a125-ca5e-4622-b048-4755a5fcace6.png" alt="image"></p>
<p><img src="https://images.velog.io/images/ena_hong/post/1f8f2d9b-5443-4b0c-b8db-be493685597c/image.png" alt=""></p>
<p><img src="https://images.velog.io/images/ena_hong/post/4199d71d-4e18-4d72-86a7-8725755b05f0/image.png" alt=""></p>
<p><img src="https://images.velog.io/images/ena_hong/post/7fcb535b-9f23-439f-81a3-2641402db074/image.png" alt=""></p>
<p>-&gt; 총 구해야 하는 Variance는 총 4개</p>
<p><img src="https://user-images.githubusercontent.com/85603111/130792683-d90cb37b-757a-468f-87e2-5753917f6ea3.png" alt="image"></p>
<p><img src="https://user-images.githubusercontent.com/85603111/130793003-3203c5fa-2548-42d0-8400-db1fdd5db0c3.png" alt="image"></p>
<h2 id="f-value-계산하기">F-value 계산하기</h2>
<ul>
<li>3개의 F값과 4개의 Variance 구해야 함</li>
</ul>
<p><img src="https://user-images.githubusercontent.com/85603111/130793347-5b1cf28a-440c-4207-9a04-f04d71d3e677.png" alt="image"></p>
<p><img src="https://user-images.githubusercontent.com/85603111/130793775-93fa6a08-5bd7-471d-bdcf-b0e479729d05.png" alt="image"></p>
<p><img src="https://images.velog.io/images/ena_hong/post/7fcf2492-8ce6-451a-8698-bd1ff81b49b0/image.png" alt=""></p>
<h3 id="1-within-variancems-구하기">1. within Variance(MS) 구하기</h3>
<p><img src="https://user-images.githubusercontent.com/85603111/130906667-ba8354dd-e43c-4dc5-8217-e710bb55a82b.png" alt="image"></p>
<h3 id="2-between-variance-구하기">2. between Variance 구하기</h3>
<ol>
<li>첫번째 main effect에 대한 between Variance</li>
</ol>
<p>-Super, Best</p>
<p><img src="https://user-images.githubusercontent.com/85603111/130906861-13a61a5b-5d70-4a2a-b93c-c6eabfa0a29e.png" alt="image"></p>
<ol start="2">
<li>두번째 main effect에 대한 between Variance</li>
</ol>
<p>-Cold, Warm, Hot </p>
<p><img src="https://user-images.githubusercontent.com/85603111/130907144-1c81a629-88e6-437b-9d17-cbcd34a9e929.png" alt="image"></p>
<ol start="3">
<li>interaction에 대한 between Variance</li>
</ol>
<p><img src="https://user-images.githubusercontent.com/85603111/130907439-c09ab128-d8e7-4c99-8b2e-7ea47e25829a.png" alt="image"></p>
<p><img src="https://user-images.githubusercontent.com/85603111/130907736-a8e1e3e4-f3e6-4aac-b935-a759831535ba.png" alt="image"></p>
<p><img src="https://user-images.githubusercontent.com/85603111/130907896-5ea01c2d-20b0-4d92-b173-9b8a40d529cf.png" alt="image"></p>
<p><img src="https://user-images.githubusercontent.com/85603111/130908055-2cac5708-172f-4a7e-9542-47bb4b22d8f4.png" alt="image"></p>
<p><img src="https://user-images.githubusercontent.com/85603111/130908338-8e375364-5c19-4aab-ab16-63b7babd5341.png" alt="image"></p>
<p><strong>-&gt; 3개 모두 유의함 -&gt; 따라서 셋 다 사후검정 필요</strong></p>
<hr>
<h2 id="two-way-anova의-사후검정">two-way ANOVA의 사후검정</h2>
<p>-&gt; 첫 번째, 두 번째 main effect에 대한 사후검정은 one-way ANOVA와 동일
<img src="https://user-images.githubusercontent.com/85603111/130908766-15cceee2-749d-4c6b-88b1-80b668e5d677.png" alt="image"></p>
<p>-&gt; interaction은 15개의 검정 결과가 나오는데 이것을 일일히 유의하다 아니다를 설명하는것이 의미가 없음
-&gt; interaction 검정 결과가 복잡해 보임 
-&gt; 보고서에 표를 넣는것도 되지만 그래프로 보여주는 것이 좋음</p>
<p><img src="https://user-images.githubusercontent.com/85603111/130909274-2126b8de-fd07-45a8-86d7-cfab2217aa79.png" alt="image"></p>
<p><img src="https://user-images.githubusercontent.com/85603111/130909706-4cef709c-5937-450a-b79d-a9635894ea96.png" alt="image"></p>
<hr>
<h2 id="two-way-anova-ss의-종류">two-way ANOVA SS의 종류</h2>
<p><img src="https://user-images.githubusercontent.com/85603111/130909885-6e82e90e-d2c3-4ddd-971d-84a9da3f5da9.png" alt="image"></p>
<p><img src="https://user-images.githubusercontent.com/85603111/130910130-d7fb5e11-bb6e-4496-a3de-013799f0351e.png" alt="image"></p>
<p><img src="https://user-images.githubusercontent.com/85603111/130910220-5b9b9c34-af85-46e6-ad8d-dc4e6e2c3502.png" alt="image"></p>
<p><img src="https://user-images.githubusercontent.com/85603111/130910349-4c6ed2eb-79f8-4d44-9e89-dd346dd72dcf.png" alt="image"></p>
<p><img src="https://user-images.githubusercontent.com/85603111/130910880-14037b95-7c5c-4db0-8ad6-b507a2bb648a.png" alt="image"></p>
<p><img src="https://user-images.githubusercontent.com/85603111/130911116-a37c655d-9132-4075-ab0f-bc0fcd927aef.png" alt="image"></p>
<p><img src="https://user-images.githubusercontent.com/85603111/130911223-83320ee2-4481-4bfb-b4f1-8b18aacdb68f.png" alt="image"></p>
<hr>
<h2 id="실습">실습</h2>
<blockquote>
<p><a href="https://www.youtube.com/watch?v=PH0kHzyT-Dc&amp;list=PLalb9l0_6WAr71hsuLImTs-Zhss5-hbHU&amp;index=6">https://www.youtube.com/watch?v=PH0kHzyT-Dc&amp;list=PLalb9l0_6WAr71hsuLImTs-Zhss5-hbHU&amp;index=6</a></p>
</blockquote>
]]></description>
        </item>
        <item>
            <title><![CDATA[one-way ANOVA(일원 배치 분산분석)]]></title>
            <link>https://velog.io/@ena_hong/one-way-ANOVA</link>
            <guid>https://velog.io/@ena_hong/one-way-ANOVA</guid>
            <pubDate>Tue, 24 Aug 2021 17:16:44 GMT</pubDate>
            <description><![CDATA[<blockquote>
<p><a href="https://www.youtube.com/watch?v=HlSyvMRLu4w">https://www.youtube.com/watch?v=HlSyvMRLu4w</a></p>
</blockquote>
<p>t-test와는 다르게...
<img src="https://user-images.githubusercontent.com/85603111/130661279-45b5d42e-fffc-4118-b2a9-4468783afa9d.png" alt="image"></p>
<p><img src="https://user-images.githubusercontent.com/85603111/130661450-91498b8d-848c-4432-9366-d2259b241bc4.png" alt="image"></p>
<p>-&gt; mutiple t-test</p>
<p><img src="https://user-images.githubusercontent.com/85603111/130729590-d5ae2547-a4a0-49ba-8e3b-d1f96ff982e6.png" alt="image"></p>
<p>-&gt; t-test를 3번 하게 되는 경우 1종오류에 걸린다.
<img src="https://user-images.githubusercontent.com/85603111/130730092-ab439133-0381-45c4-bafd-602837c4eadd.png" alt="image"></p>
<p><img src="https://user-images.githubusercontent.com/85603111/130729728-aa1af8fc-013d-49ed-8048-5bad634cdb5e.png" alt="image"></p>
<p><img src="https://user-images.githubusercontent.com/85603111/130730227-79bbbbe2-dd89-47ff-8ae7-8d6ac499e790.png" alt="image"></p>
<hr>
<h2 id="anova-전에-알아야-할것들">ANOVA 전에 알아야 할것들</h2>
<h3 id="변수">변수</h3>
<ul>
<li>독릭변수</li>
<li>종속변수</li>
<li>통제변수</li>
</ul>
<p><img src="https://user-images.githubusercontent.com/85603111/130730525-9be68c26-cc4d-4024-b8ee-f287cc74d43a.png" alt="image"></p>
<p><img src="https://user-images.githubusercontent.com/85603111/130730594-9cfb5438-1e0e-4071-b7f9-41a6c503bfbd.png" alt="image"></p>
<p><img src="https://user-images.githubusercontent.com/85603111/130730752-17c33fac-f206-4f9a-8c44-9717379a4734.png" alt="image"></p>
<p>-&gt; 재방문율에 영향을 미칠 만한 다른 변수들을 통제변수라고 한다.</p>
<h3 id="anova와-변수-★">ANOVA와 변수 ★</h3>
<p><img src="https://user-images.githubusercontent.com/85603111/130731245-fa72b56a-857f-48ee-b1c3-e27ab65ab45b.png" alt="image"></p>
<p>-&gt; one-way ANOVA는 독립변수가 1개(Categorical)일 때 사용 </p>
<ul>
<li>예시들 
<img src="https://user-images.githubusercontent.com/85603111/130731492-56d1fe3f-56e3-4ca6-baff-1bfb4e43f6a0.png" alt="image">
<img src="https://user-images.githubusercontent.com/85603111/130731707-3225e8b3-b182-4e29-8c29-f11ac712ced2.png" alt="image">
<img src="https://user-images.githubusercontent.com/85603111/130731856-f0a3eed3-08eb-4617-9feb-61ada7ea547b.png" alt="image"></li>
</ul>
<p>-&gt; 여기서 착각하지 말아야 할것은 독립변수는 1개인다. (not 3개, not 4개)</p>
<hr>
<h2 id="anova의-기본을-이해하자">ANOVA의 기본을 이해하자</h2>
<p><img src="https://user-images.githubusercontent.com/85603111/130733050-5abb93a3-cbb7-4bf1-a173-2dab5675525a.png" alt="image"></p>
<p><img src="https://user-images.githubusercontent.com/85603111/130733114-759aad55-2a16-4377-9c06-4e26c983190c.png" alt="image"></p>
<p><img src="https://user-images.githubusercontent.com/85603111/130733241-14eb5419-d71c-4b95-959a-d04e70fe8b63.png" alt="image"></p>
<p>-&gt; (j =1,2,3, ....) 독립변수는 categorical한 변수임으로</p>
<p><img src="https://user-images.githubusercontent.com/85603111/130733950-72df230a-d8d5-4c5f-b17a-3455ba01f963.png" alt="image"></p>
<p><img src="https://user-images.githubusercontent.com/85603111/130734202-4b4d0a39-073e-4fb9-b999-946ba67a9481.png" alt="image"></p>
<p><img src="https://user-images.githubusercontent.com/85603111/130734442-47738af1-9ced-4b12-8642-0166173bac61.png" alt="image"></p>
<p><img src="https://user-images.githubusercontent.com/85603111/130734615-b17057b4-86a2-40f6-adb8-7f97944e9634.png" alt="image"></p>
<hr>
<h2 id="anova는-f-valuef값-이다">ANOVA는 F-value(F값) 이다.</h2>
<p><img src="https://user-images.githubusercontent.com/85603111/130734812-9373417b-ba80-4c30-b531-dbd6034e7f92.png" alt="image"></p>
<h3 id="f-vale-란">F-vale 란?</h3>
<p><img src="https://user-images.githubusercontent.com/85603111/130734975-6e2178a1-fd8c-4c66-8725-0526548538af.png" alt="image"></p>
<p><img src="https://user-images.githubusercontent.com/85603111/130735568-f62186b1-3924-4a72-abca-d3476cd3542d.png" alt="image"></p>
<p><img src="https://user-images.githubusercontent.com/85603111/130736433-b4c3a2d1-8c87-4afd-b98a-e011a2f1e548.png" alt="image"></p>
<p><img src="https://user-images.githubusercontent.com/85603111/130736585-ec2a298f-74c8-4087-a3e2-ad56807bfc40.png" alt="image"></p>
<p>-&gt; GM = 전체평균 / M = 각각의 그룹의 평균</p>
<p><img src="https://user-images.githubusercontent.com/85603111/130736841-e51b61db-960e-40f4-811e-2ec9f141f7de.png" alt="image"></p>
<ul>
<li><p>첫번째 분산 : Between Variance
<img src="https://user-images.githubusercontent.com/85603111/130737167-1f540933-d2ae-49c7-85e5-45a2e16b6c30.png" alt="image"></p>
</li>
<li><p>두번째 분산 : Within Variance</p>
</li>
</ul>
<p><img src="https://user-images.githubusercontent.com/85603111/130737489-95ac891c-875f-40af-9fe5-fd91843c591d.png" alt="image"></p>
<p><img src="https://user-images.githubusercontent.com/85603111/130737819-a07ad0e8-a606-4fc3-b7ac-71b6cda640d1.png" alt="image"></p>
<p><img src="https://user-images.githubusercontent.com/85603111/130738059-0fa00071-9601-457b-bf63-d9d7a1786b0d.png" alt="image"></p>
<hr>
<h3 id="f-value-계산하기">F-value 계산하기</h3>
<p><img src="https://user-images.githubusercontent.com/85603111/130738690-fa1c3d29-0165-4ce6-9bfb-00011ec7605c.png" alt="image"></p>
<p><img src="https://user-images.githubusercontent.com/85603111/130738910-bd31705b-7f2c-43ff-a2d2-6e6420fca5c5.png" alt="image"></p>
<p><img src="https://user-images.githubusercontent.com/85603111/130739201-d773c09c-10d5-4058-b79a-ff5f58137c44.png" alt="image"></p>
<p><img src="https://user-images.githubusercontent.com/85603111/130739392-15fe3d6d-738d-4dc0-bb79-cec7ef3b9e2f.png" alt="image"></p>
<p>-&gt; 따라서 Between Variance = 5.125 / 2 </p>
<p><img src="https://user-images.githubusercontent.com/85603111/130739761-b0b5385a-276b-4201-b33e-9cff812af734.png" alt="image"></p>
<p><img src="https://user-images.githubusercontent.com/85603111/130739861-883334dc-4326-408c-9baa-c57fb6269ea2.png" alt="image"></p>
<p>-&gt; Within Variance = 1.757 / 7 </p>
<p><img src="https://user-images.githubusercontent.com/85603111/130740150-e2b917cd-d476-44d8-abd5-8daa0e952f8a.png" alt="image"></p>
<p><img src="https://user-images.githubusercontent.com/85603111/130740504-a2e6db2d-db31-45d5-b457-cfbaecd2ff94.png" alt="image"></p>
<hr>
<h3 id="anova의-f-table과-사후검정">ANOVA의 f-table과 사후검정</h3>
<p><img src="https://user-images.githubusercontent.com/85603111/130741587-4bafc096-1d96-43f2-ad3a-325cde5e3184.png" alt="image"></p>
<p><img src="https://user-images.githubusercontent.com/85603111/130741671-69861d05-f22d-4e0e-a964-32a1abae12cb.png" alt="image"></p>
<p><img src="https://user-images.githubusercontent.com/85603111/130741810-e97eaef7-6a9c-4d12-878a-c9d86dc970c1.png" alt="image"></p>
<p><img src="https://user-images.githubusercontent.com/85603111/130741966-8b3f6694-b320-4019-af07-52331dcd2d13.png" alt="image"></p>
<p><img src="https://user-images.githubusercontent.com/85603111/130742833-b7219fec-525e-42cc-959b-3b7804ece0a7.png" alt="image"></p>
<ul>
<li>Post Hoc Test = 사후검정</li>
<li>SE = Standard Error</li>
<li>t = t-value</li>
<li>p = p-value</li>
</ul>
<p><img src="https://user-images.githubusercontent.com/85603111/130744265-21079d8d-c4f3-4925-b946-00e114ac63aa.png" alt="image"></p>
<p>-&gt; Group1 과 2는 차이가 없다
-&gt; Group1 과 3, 2 과 3은 차이가 있다. </p>
<hr>
<h2 id="anova-실습">ANOVA 실습</h2>
<blockquote>
<p><a href="https://www.youtube.com/watch?v=2ZgdukOPnyU&amp;list=PLalb9l0_6WArk6oZej3KzduU8TRQA9gcV&amp;index=8">https://www.youtube.com/watch?v=2ZgdukOPnyU&amp;list=PLalb9l0_6WArk6oZej3KzduU8TRQA9gcV&amp;index=8</a></p>
</blockquote>
<p><img src="https://user-images.githubusercontent.com/85603111/130745426-3a0c34f2-d65c-48a7-bd9a-3c79156ecd71.png" alt="image"></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[T-test]]></title>
            <link>https://velog.io/@ena_hong/T-test</link>
            <guid>https://velog.io/@ena_hong/T-test</guid>
            <pubDate>Tue, 24 Aug 2021 13:42:22 GMT</pubDate>
            <description><![CDATA[<blockquote>
<p><a href="https://www.youtube.com/watch?v=JhvanJrl6oE&amp;list=PLalb9l0_6WArHh18Plrn8uIGBUKalqsf-&amp;index=4">https://www.youtube.com/watch?v=JhvanJrl6oE&amp;list=PLalb9l0_6WArHh18Plrn8uIGBUKalqsf-&amp;index=4</a></p>
</blockquote>
<p><img src="https://user-images.githubusercontent.com/85603111/130596545-79b2e5f2-43b4-40de-848d-dc63f377ab00.png" alt="image"></p>
<h2 id="t-test란">t-test란?</h2>
<ul>
<li>모집단의 표준편차가 알려지지 않았을 때, 정규분포의 모집단에서 모은 샘플(표본)의 평균값에 대한 가설검정 방법</li>
</ul>
<p><img src="https://user-images.githubusercontent.com/85603111/130596355-16da5a17-4bf9-44fe-9337-db822a3194a1.png" alt="image"></p>
<p><img src="https://user-images.githubusercontent.com/85603111/130596745-c8e7c638-31a7-4600-8ad8-8e4e93df485f.png" alt="image"></p>
<p><img src="https://user-images.githubusercontent.com/85603111/130597016-30f29a67-405a-45b0-a9de-5d48c48f520b.png" alt="image"></p>
<p><img src="https://user-images.githubusercontent.com/85603111/130597197-1b9d8671-13e5-4acb-93b3-d8212aedd3c7.png" alt="image">
<img src="https://user-images.githubusercontent.com/85603111/130597979-e79ba0dd-99e1-40a4-b31c-93c3b839fc55.png" alt="image"></p>
<ul>
<li>예를들어 평균 = 3, 표준편자= 1.58인 데이터가 있다고 해보자. </li>
</ul>
<p><img src="https://user-images.githubusercontent.com/85603111/130598195-374a0874-5ea2-4963-8ac1-86e478f5f7b7.png" alt="image"></p>
<p><img src="https://user-images.githubusercontent.com/85603111/130598514-82cbc30c-403b-4b3d-a9d9-1cd5ef760c07.png" alt="image"></p>
<p><img src="https://user-images.githubusercontent.com/85603111/130598815-dd07bd6e-e10c-4f14-955f-aa1027a8baf7.png" alt="image"></p>
<p><img src="https://user-images.githubusercontent.com/85603111/130599020-82919a27-8205-4914-9eb9-96fd2e821abd.png" alt="image"></p>
<hr>
<h2 id="t-test를-바로-시작하지-못하는-이유">t-test를 바로 시작하지 못하는 이유</h2>
<h3 id="1-정규분포--z-test">1. 정규분포- (z-test)</h3>
<p><img src="https://user-images.githubusercontent.com/85603111/130599408-195c7ff9-fd2c-4f20-89e9-3151ae6c455f.png" alt="image"></p>
<ul>
<li>모집단의 경우는 z-test / 표본일 경우는 t-test를 한다.</li>
</ul>
<p><img src="https://user-images.githubusercontent.com/85603111/130599736-c07da044-4f18-4bd8-ac70-7e40e9ca2551.png" alt="image"></p>
<ul>
<li>정규분포는 평균과 표준편차만으로 규정됨</li>
<li>정규분포 아래 면적은 <strong>확률</strong>을 의미함 (면적의 합 =1)</li>
</ul>
<p><img src="https://user-images.githubusercontent.com/85603111/130600355-0fd759cd-96cf-414c-a982-2d935ecefceb.png" alt="image"></p>
<ul>
<li><p>총 1000명을 학생 중 
영어점수가 82점~90점 사이의 학생 수를 구하고 싶다.</p>
</li>
<li><p>평균 = 82 , 표준편차 = 5 인 정규분포를 표준정규분포로 바꾸기
<img src="https://user-images.githubusercontent.com/85603111/130600813-efdbc6c4-9180-45ec-861b-71c03560a04a.png" alt="image"></p>
<p><img src="https://user-images.githubusercontent.com/85603111/130601588-2d10d2b4-5d94-4b90-9411-bea172960f64.png" alt="image"></p>
</li>
</ul>
<h3 id="z-test">z-test</h3>
<p><img src="https://user-images.githubusercontent.com/85603111/130601916-7c53860c-1dca-4169-a0ab-60d284a21cde.png" alt="image"></p>
<p><img src="https://user-images.githubusercontent.com/85603111/130602264-c75ec9c5-871e-408d-a206-19cf8805051d.png" alt="image"></p>
<h3 id="2-양측two-tail단측one-tail-검정">2. 양측(two-tail)/단측(one-tail) 검정</h3>
<p><img src="https://user-images.githubusercontent.com/85603111/130628692-09ef158e-e274-48b3-a2e2-f266f918eb5b.png" alt="image"></p>
<p><img src="https://user-images.githubusercontent.com/85603111/130629186-1b6dd79f-bbd8-44f2-a9d8-c48820e8e9cf.png" alt="image"></p>
<p><img src="https://user-images.githubusercontent.com/85603111/130629516-e09aed5d-aa92-4509-8816-f3afd7c84884.png" alt="image"></p>
<p><img src="https://user-images.githubusercontent.com/85603111/130629866-432dae5d-1c1d-4e39-8c0a-2ce5bbe52a62.png" alt="image"></p>
<p><img src="https://user-images.githubusercontent.com/85603111/130630103-3b28364a-01f5-4d59-9fa7-595a28a848bc.png" alt="image"></p>
<ul>
<li>단측검정을 할지 양측검정을 할지는 연구자가 결정한다. </li>
</ul>
<hr>
<h2 id="이제-t-test-를-해보자">이제 t-test 를 해보자</h2>
<p><img src="https://user-images.githubusercontent.com/85603111/130630622-d99c1e37-eb98-49b7-a67b-b7ff1f2a0dd9.png" alt="image"></p>
<ul>
<li>양측검정을 하기로 하자</li>
</ul>
<p><img src="https://user-images.githubusercontent.com/85603111/130630906-7a81a6d2-e1c5-42d7-9ed4-b07b37b57fa9.png" alt="image"></p>
<p><img src="https://user-images.githubusercontent.com/85603111/130631565-e6d1b750-1a11-4854-8612-d8d3ee6bf4aa.png" alt="image"></p>
<p><img src="https://user-images.githubusercontent.com/85603111/130631976-f3bc59c8-f412-4a99-b1eb-1ff9e0635d98.png" alt="image"></p>
<p><img src="https://user-images.githubusercontent.com/85603111/130632338-4e4c153a-a1ab-4f7f-9b2e-024ff30d0b7d.png" alt="image"></p>
<ul>
<li>파랑색 분포 : 표준정규분포 - N(0,1)</li>
<li>초록,빨강,노랑 : t분포 - t(자유도) </li>
<li>자유도 = df(degree of freedom) = n - 1 </li>
<li><em>-&gt; n(데이터)가 증가할수록 t분포가 표준정규분포에 가까워 진다(근사한다.)*</em></li>
</ul>
<p><img src="https://user-images.githubusercontent.com/85603111/130633556-931e682e-0c3a-40a8-aeb4-7c439d1848b9.png" alt="image"></p>
<p><img src="https://user-images.githubusercontent.com/85603111/130634116-57fb5c5d-092a-4161-a613-1d65d86ea23c.png" alt="image"></p>
<p>-&gt; 검색창에 &#39;t-table&#39; 검색한 후 
<img src="https://user-images.githubusercontent.com/85603111/130637950-708892ec-85c2-4097-829f-c99ec0e848e6.png" alt="image"></p>
<p><img src="https://user-images.githubusercontent.com/85603111/130639051-ce0e274f-89db-446d-b253-e2d78c7a2871.png" alt="image"></p>
<ul>
<li>1 : <strong>two-tail</strong> / 2 : <strong>0.05(5%확률)</strong> / 3 : <strong>critical value(c.v)1.984</strong></li>
</ul>
<p><img src="https://user-images.githubusercontent.com/85603111/130640663-e35a3f68-1750-42c7-9e30-15e679243a89.png" alt="image"></p>
<p><img src="https://user-images.githubusercontent.com/85603111/130641778-0e2c5f5b-7fd2-4e63-9a9e-f0c80ecbca81.png" alt="image"></p>
<p><img src="https://user-images.githubusercontent.com/85603111/130642034-33c980ce-582f-4eab-9ff5-9523c2bbf93d.png" alt="image"></p>
<ul>
<li>왜 다를까? 원인이 뭐가있을까 고민해봐야 한다.</li>
</ul>
<hr>
<h2 id="t-test의-종류">t-test의 종류</h2>
<ol>
<li><p>two-sample t-test(=independent samples t-test)
<img src="https://user-images.githubusercontent.com/85603111/130658612-aae840ac-c443-4d57-a429-60e71f571444.png" alt="image"></p>
</li>
<li><p>one-sample t-test
<img src="https://user-images.githubusercontent.com/85603111/130658905-6654aa5c-c9ae-4146-a895-27e475e5356b.png" alt="image"></p>
</li>
</ol>
<ol start="3">
<li>Paired t-test
한개의 sample을 비포, 에프터 비교
<img src="https://user-images.githubusercontent.com/85603111/130659053-6466d3e1-cbd8-49d9-a5b9-b1fdd6138cda.png" alt="image"></li>
</ol>
<hr>
]]></description>
        </item>
        <item>
            <title><![CDATA[[태블로]이중축 vs 결합축]]></title>
            <link>https://velog.io/@ena_hong/%ED%83%9C%EB%B8%94%EB%A1%9C%EC%9D%B4%EC%A4%91%EC%B6%95-vs-%EA%B2%B0%ED%95%A9%EC%B6%95</link>
            <guid>https://velog.io/@ena_hong/%ED%83%9C%EB%B8%94%EB%A1%9C%EC%9D%B4%EC%A4%91%EC%B6%95-vs-%EA%B2%B0%ED%95%A9%EC%B6%95</guid>
            <pubDate>Sat, 17 Jul 2021 17:57:11 GMT</pubDate>
            <description><![CDATA[<h3 id="이중-축-dual-axis">이중 축 (Dual Axis)</h3>
<p>: 하나의 뷰 안에서 축을 이중으로 써서 만든 차트
제한된 공간에서 복수개의 값을 비교해 보기 위해 많이 사용됨
이중 축을 쓸 경우 마크를 동일하게 쓸수도 있고, 다른 마크를 쓸수도 있음
두 개의 측정값이 열 선반 또는 행 선반에 차례로 올라간 경우, 축을 병합하여 표현할 수 있는데, 이를 &#39;이중축 (Dual Axis)&#39;라고 부른다.</p>
<h3 id="결합된-축-shared-axis--combined-axis">결합된 축 (Shared Axis / Combined Axis)</h3>
<p>:이중 축은 축을 양쪽으로 이중으로 쓰는 반면, 결합된 축은<br>하나의 축을 공유하는 차트 
단일 축에서 서로 다른 측정값을 어떻게 구현하는지 살펴보자.</p>
<blockquote>
<p><a href="https://www.youtube.com/watch?v=CNXG9bIucH0&amp;list=PL6ICdBRB3Rx1ME7YB0O4Aik-mqtXJrBhU&amp;index=7">[태블로 기초] 이중 축과 결합된 축 | Double axis &amp; Combined(Shared) axis | 플랜잇 Tableau Good morning</a></p>
</blockquote>
<blockquote>
<p><a href="https://www.youtube.com/watch?v=NZQlP4tvJaI&amp;list=PL6ICdBRB3Rx1ME7YB0O4Aik-mqtXJrBhU&amp;index=12">[태블로 기초] 이중 축 활용으로 화면을 풍부하게! Part.2 | 플랜잇 Tableau Good morning</a></p>
</blockquote>
<blockquote>
</blockquote>
]]></description>
        </item>
        <item>
            <title><![CDATA[[태블로]차원vs측정값]]></title>
            <link>https://velog.io/@ena_hong/%ED%83%9C%EB%B8%94%EB%A1%9C%EC%B0%A8%EC%9B%90vs%EC%B8%A1%EC%A0%95%EA%B0%92</link>
            <guid>https://velog.io/@ena_hong/%ED%83%9C%EB%B8%94%EB%A1%9C%EC%B0%A8%EC%9B%90vs%EC%B8%A1%EC%A0%95%EA%B0%92</guid>
            <pubDate>Sat, 17 Jul 2021 16:00:31 GMT</pubDate>
            <description><![CDATA[<h3 id="span-stylecolorgreen측정값span-measures"><span style="color:GREEN">측정값</span> (Measures)</h3>
<p>일반적으로 측정값은 <strong>숫자형식</strong>, 연속형이고, 액션(drag-drop 또는 double click)하면 <strong>집계</strong>를 통해 차트를 만든다.</p>
<p>집계할 수 있다는 것은 측정값 데이터를 합하고 <strong>(SUM)</strong>, 평균을 구하고 <strong>(AVG)</strong>, 최대값을 구하고 <strong>(MAX)</strong>, 최소값을 구하고 <strong>(MIN)</strong>, 빈도수 <strong>(COUNT)</strong>를 구하는 등 계산으로 결과를 요약할 수 있다는 것이다.</p>
<h3 id="span-stylecolorblue차원spandimensions"><span style="color:BLUE">차원</span>(Dimensions)</h3>
<p>일반적으로 정성적인 값(이름, 지역, 날짜), 불연속적 이고,
차원은 측정값을 집계한 숫자들로 만들어진 차트를 어떻게 나눠서 볼것인지를 결정한다.
<strong><img src ='https://images.velog.io/images/ena_hong/post/2c01e99a-bf9d-480f-9ff7-f20979d54b00/image.png' width=200>
 <span style="color:GREEN">측정값</span> -&gt; <span style="color:BLUE">차원</span> -&gt; <span style="color:GREEN">측정값</span> -&gt; <span style="color:BLUE">차원</span></strong>
필요에 따라 측정값을 차원으로, 차원을 측정값으로 변환할 수 있음</p>
<hr>
<h3 id="불연속형-vs-연속형">불연속형 vs 연속형</h3>
<p><span style="color:BLUE"><strong>불연속형</strong></span>은 머리글을 표시하고, <span style="color:green"><strong>연속형</strong></span>은 축을 표시한다.
<img src="https://images.velog.io/images/ena_hong/post/e1ba3968-408d-4d0b-8110-85fa02dcbcc6/image.png" alt=""></p>
<hr>
<h3 id="측정값-이름-vs-측정값">측정값 이름 vs 측정값</h3>
<p>측정값 이름 및 측정값 필드는 태블로가 어떤 유형의 데이터 표현이 가능하도록 자동으로 생성한 필드들이다. </p>
<p>태블로에서 자동으로 생성된 필드는 &#39;<strong><em>이태릭체</em></strong> &#39;로 표현된다.</p>
<p><span style="color:BLUE"><strong><em>측정값 이름</em></strong></span>은 모든 측정값의 열 이름을 항목으로 가지는 <strong>차원 필드</strong>이고, <span style="color:green"><strong><em>측정값</em></strong></span>은 모든 측정값을 지칭하는 <strong>측정값 필드</strong>이다.</p>
<h4 id="뷰에서-작동하는-방식">뷰에서 작동하는 방식</h4>
<ol>
<li>측정값 이름과 측정값은 뷰에서 함께 사용하여야 한다.</li>
<li>측정값을 뷰의 어느 선반에 추가하면 마크 선반 하단에 측정값에 대한 선반이 생성된다.</li>
<li>사용할 측정값만 뷰에서 남기려면 필터 선반에 들어간 측정값 이름을 선택하여 필터 목록을 편집하거나 측정값에 대한 선반에서 사용하지 않을 측정값 필드를 차례로 선반에서 제거한다.<img src = 'https://images.velog.io/images/ena_hong/post/1f5cafd5-c790-4ac7-b4a6-f04254bbbe5a/image.png' width =450> 
</li>
</ol>
<hr>
<h4 id="예제-측정값이-두-개-이상-담긴-테이블-만들기">예제) 측정값이 두 개 이상 담긴 테이블 만들기</h4>
<hr>
<ul>
<li>측정값을 하나만 사용할 때
<img src="https://images.velog.io/images/ena_hong/post/46f7e000-2985-4f4a-b9b9-cbd56f92418e/image.png" alt=""></li>
<li>측정값을 두 개 사용할 때 
  -측정값 이름과 측정값을 사용하지 않는 경우
<img src="https://images.velog.io/images/ena_hong/post/264aacef-8de9-4b81-b84e-01d853b8f637/image.png" alt=""></li>
<li>측정값을 두 개 사용할 때 
  -측정값 이름과 측정값을 사용한 경우
<img src="https://images.velog.io/images/ena_hong/post/c3fb2b9d-68e5-4abf-b9cc-14ae2e331ee0/image.png" alt=""></li>
</ul>
<h3 id="머리글-vs-축-vs-패널">머리글 vs 축 vs 패널</h3>
<ul>
<li>축 : 농도 </li>
<li>머리글 :1월 ~ 7월</li>
<li>패널 : 안에 있는 막대그래프들</li>
</ul>
<p><img src="https://images.velog.io/images/ena_hong/post/ab84beb0-b291-47bb-beb3-bde503b01423/image.png" alt=""></p>
]]></description>
        </item>
    </channel>
</rss>