SELECT CONCAT('Hello','bye'), CONCAT('good','bad')
FROM dual
;
concat이 아닌 operator이용
SELECT CONCAT('good','bad') concat,
'good' || 'bad' operators
FROM dual
;
DEPARTMENTS 테이블에서 부서번호와 부서이름, 위치번호를 합하여 출력하도록 하라.(||사용)
*/
SELECT DEPARTMENT_ID || DEPARTMENT_NAME || LOCATION_ID
FROM DEPARTMENTS d
;
/*
EMPLOYEES 테이블에서 30번 부서 중 사원번호 이름과 담당 아이디를 연결하여 출력하여라.
(concat 사용)
*/
SELECT CONCAT(CONCAT(DEPARTMENT_ID, LAST_NAME), MANAGER_ID)
FROM EMPLOYEES e
WHERE DEPARTMENT_ID = 30
;
널 값을 다른 데이터로 변경하는 함수를 말한다.
![](https://velog.velcdn.com/images/gwooroh23/post/a48d7bde-09c8-42ec-8501-938d589b8eff/image.png)
COMMISSION_PCT의 값을 0으로 맞춰주었으므로 모든 COMMISSION_PCT의 값은 0이 된다. 만일 10으로 지정한다면 모든 데이터 값이 10으로 고정
case() : else if 문과 같은 역할 함수
SELECT FIRST_NAME , LAST_NAME ,DEPARTMENT_ID
, CASE WHEN DEPARTMENT_ID = 20 THEN 'MA'
WHEN DEPARTMENT_ID = 60 THEN 'IT'
WHEN DEPARTMENT_ID = 90 THEN 'EX'
ELSE ''
END "department"
FROM EMPLOYEES e
;
코드에 나와있는대로 DEPARTMENT_ID의 값에 따라 department값을 지정한다.
SALARY+SALARY*nvl(COMMISSION_PCT ,0) 이 10000이상이면, 'good'
* 5000 이상이면, 'average',
* 1이상 5000미만이면 'bad'
* 0이면 no good 로 평가하고
EMPLOYEE_ID ,FIRST_NAME , SALARY ,COMMISSION_PCT,
SALARY+SALARY*nvl(COMMISSION_PCT ,0) 평가를 출력해라.
*/
SELECT EMPLOYEE_ID , FIRST_NAME , SALARY , COMMISSION_PCT
, SALARY + SALARY * nvl(COMMISSION_PCT, 0) AS sal
, CASE
WHEN SALARY + SALARY * nvl(COMMISSION_PCT, 0) >= 10000 THEN 'good'
WHEN SALARY + SALARY * nvl(COMMISSION_PCT, 0) >= 5000 THEN 'average'
WHEN SALARY + SALARY * nvl(COMMISSION_PCT, 0) >= 1 THEN 'bad'
WHEN SALARY + SALARY * nvl(COMMISSION_PCT, 0) = 0 THEN 'no good'
END AS grade
FROM EMPLOYEES e
ORDER BY sal
;
데이터를 그룹핑해서 그 결과를 가져오는 경우 사용한다.집계함수와 짝을 이루어 사용할 수 있다.
EMPLOYEES 테이블에서 부서 인원이 4명보다 많은 부서의 부서번호,
-- 인원수, 급여의 합을 구하여 출력하여라
SELECT DEPARTMENT_ID,COUNT(EMPLOYEE_ID),SUM(SALARY)
FROM EMPLOYEES e
HAVING COUNT(EMPLOYEE_ID)>=4
GROUP BY DEPARTMENT_ID
ORDER BY DEPARTMENT_ID ;
--
> where문이 아닌 having을 쓴다는 점을 기억해야 할 것
매니저의 사번 및 그 매니저가 관리하는 직원들 중
-- 최소 연봉을 받는 사원의 연봉을 조회한다.
-- 매니저가 없는 사람들은 제외한다.
-- 최소 연봉 기준 역순으로 조회한다.
SELECT *
FROM EMPLOYEES e;
SELECT MANAGER_ID ,MIN(SALARY)
FROM EMPLOYEES e
WHERE MANAGER_ID IS NOT NULL
GROUP BY MANAGER_ID
ORDER BY MIN(SALARY) DESC
;
좋은 글 잘 읽었습니다, 감사합니다.