티스토리 뷰

 

 

 

 

 

▶▶   DISTINCT  키워드

–  "중복된 값"을 자동으로 "제거"해주는 키워드.
–  SELECT절의 모든 요소에 대해 일괄 중복값을 제거하는 형태로 동작.
–  여러 컬럼 요소들에 대한 중복값 제거는, 컬럼 목록의 값이 모두 일치한 경우에만 중복값으로 인정하고 제거함.
–  컬럼의 값들 중 하나라도 다른 값이 있는 경우, 해당 값을 개별값으로 보고 중복값으로 인정하지 않음.  


EX1   )   하나의 컬럼 사용

mysql> SELECT DISTINCT department_id
    -> FROM employees;
+---------------+
| department_id |
+---------------+
|          NULL |	// 소속부서 없는 사람
|            10 |
|            20 |
...
|            80 |
|            90 |
|           100 |
|           110 |
+---------------+

→   각 사원의 소속부서를 모두 알기보다는 부서 id만 알고 싶을 때 사용 (중복제거)

 

 

 

EX2   )   두 컬럼이상 사용

mysql> SELECT DISTINCT department_id, job_id
    -> FROM employees;
    
    
+---------------+------------+
| department_id | job_id     |
+---------------+------------+
|            90 | AD_PRES    | // 90번 부서의 AD_PRES
|            90 | AD_VP      | // 90번 부서의 AD-VP	// job_id의 값이 다름, 중복값이 아님!
|            60 | IT_PROG    |
...
|            40 | HR_REP     |
|            70 | PR_REP     |
|           110 | AC_MGR     |
|           110 | AC_ACCOUNT |
+---------------+------------+

→   두 컬럼을 쌍으로 묶어서 봐야 함, 두 컬럼 값 모두 동일한 중복값만 제거함.

 

 


 

 

Q1  )   employees 테이블로부터 employee_id, last_name, job_id, hire_date를 출력하되,
           컬럼 제목을 각각 Emp #,  Employee,  job,  Hire Date로 지정하여 출력하시오.


A1  ) 

mysql> SELECT employee_id AS "Emp #", last_name "Employee",
    -> job_id job, hire_date "Hire Date"
    -> FROM employees;
    
    
+-------+-------------+------------+------------+
| Emp # | Employee    | job        | Hire Date  |
+-------+-------------+------------+------------+
|   100 | King        | AD_PRES    | 1987-06-17 |
|   101 | Kochhar     | AD_VP      | 1989-09-21 |
|   102 | De Haan     | AD_VP      | 1993-01-13 |
...
|   204 | Baer        | PR_REP     | 1994-06-07 |
|   205 | Higgins     | AC_MGR     | 1994-06-07 |
|   206 | Gietz       | AC_ACCOUNT | 1994-06-07 |
+-------+-------------+------------+------------+
107 rows in set (0.00 sec)

   column alias 설정시, mysql은 큰따옴표"" 없이 대소문자 구별 가능.
      근데 오라클에서는 아님, 되도록 대소문자 구분은 큰따옴표"" 사용.
   # '샵' 보다는 '해시태그'라고 읽기

 

 


 

 

Q2   )   employees 테이블로부터 사원들이 담당하고 있는 업무 리스트를 출력하시오.

 

A2   ) 

// 사원들이 담당하고 있는 업무 리스트 출력 → job id
// 모든 사원들의 업무 리스트는 중복 업무값이 발생 → DISTINCT로 중복값 제거

mysql> SELECT DISTINCT job_id
    -> FROM employees;
+------------+
| job_id     |
+------------+
| AC_ACCOUNT |
| AC_MGR     |
| AD_ASST    |
...
| SH_CLERK   |
| ST_CLERK   |
| ST_MAN     |
+------------+
19 rows in set (0.00 sec)

 

 

 

 

 

 

 

 

 

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/06   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함