SQL

DB/SQL오답노트

[프로그래머스] Lv1.여러 기준으로 정렬하기

정답 내가 틀린 이유: '이름이 같은 동물 중에서는 보호를 나중에 시작한 동물을 먼저 보여줘야합니다.' 조건을 너무 복잡하게 생각했다. 이름에 중복에 관계없이 먼저 들어오는 동물 순으로 나열하면 되는데 너무 복잡하게 생각했다.

DB/Oracle

[서브쿼리] 다중열 서브쿼리/FROM절에 사용하는 서브쿼리와 WITH절

다중열 서브쿼리 다중열 서브쿼리는 서브쿼리의 SELECT절에 비교할 데이터를 여러 개 지정하는 방식이다. SELECT * FROM EMP WHERE (DEPTNO, SAL) IN (SELECT DEPTNO, MAX(SAL) FROM EMP GROUP BY DEPTNO); FROM절에 사용하는 서브쿼리와 WITH절 앞서 살펴본 서브쿼리는 WHERE절에서 조건식 대상으로 사용했다. 그런데 FROM절 역시 WHERE절과 마찬가지로 서브쿼리를 사용할 수 있다. FROM절에 사용하는 서브쿼리는 인라인 뷰라고 부른다. 인라인 뷰는 특정 테이블 전체 데이터가 아닌 SELECT문을 통해 일부 데이터를 먼저 추출한 후 별칭을 주어 아래와 같이 작성할 수 있다. SELECT E10.EMPNO, E10.ENAME, E10...

DB/Oracle

[서브쿼리] 다중행 서브쿼리

다중행 서브쿼리 다중행 서브쿼리는 실행 결과 행이 여러 개 나오는 서브쿼리입니다. 다중행 서브쿼리에 사용되는 연산자는 아래와 같다. 다중행 연산자 설명 IN 메인쿼리의 데이터가 서브쿼리의 결과 중 하나라도 일치한 데이터가 있다면 true ANY, SOME 메인쿼리의 조건식을 만족하는 서브쿼리의 결과가 하나 이상이면 true ALL 메인쿼리의 조건식을 서브쿼리의 결과 모두가 만족하면 true EXISTS 서브쿼리의 결과가 존재하면(즉, 행이 1개 이상일 경우) true IN 연산자 IN 연산자를 서브쿼리와 함께 쓰면 메인쿼리의 데이터가 서브쿼리의 결과 중 하나라도 일치한 데이터가 있다면 실행된다. 예를들어 IN 연산자와 서브쿼리를 사용하여 각 부서별 최고 급여와 동일한 급여를 받는 사원 정보를 출력하는 쿼..

DB/Oracle

[다중행 함수] 하나의 열에 출력 결과를 담는 다중행 함수

다중행 함수 다중행 함수는 여러 행을 바탕으로 하나의 결과 값을 도출해내는 함수다. 자주 사용하는 함수에는 아래와 같이 5가지의 함수가 있다. 함수 설명 SUM 지정한 데이터의 합 반환 COUNT 지정한 데이터의 개수 반환 MAX 지정한 데이터 중 최댓값 반환 MIN 지정한 데이터 중 최솟값 반환 AVG 지정한 데이터의 평균값 반환 합계를 구하는 SUM 함수 SUM함수는 데이터의 합을 구하는 함수다. SUM([DISTINCT, ALL 중 하나를 선택하거나 아무 값도 지정하지 않음(선택)] [합계를 구할 열이나 연산자, 함수를 사용한 데이터(필수)]) 추가 수당 합계를 구하기 위한 쿼리문을 SUM 함수를 작성해보자. SELECT SUM(COMM) FROM EMP; SUM 함수를 생략 가능한 옵션 DISTI..

DB/Oracle

[오라클 함수] 상황에 따라 다른 데이터를 반환하는 DECODE 함수와 CASE문

특정 열 값이나 데이터 값에 따라 어떤 데이터를 반환할 지 정할 때는 DECODE 함수 또는 CASE문을 사용한다. DECODE 함수 DECODE 함수는 기준이 되는 데이터를 먼저 지정한 후 해당 데이터 값에 따라 다른 결과 값을 내보내는 함수다. DECODE([검사 대상이 될 열 또는 데이터, 연산이나 함수의 결과], [조건1], [데이터가 조건1과 일치할 때 반환할 결과], [조건2], [데이터가 조건2와 일치할 때 반환할 결과], ... [조건n], [데이터가 조건n과 일치할 때 반환할 결과], [위 조건1~조건n과 일치한 경우가 없을 때 반환할 결과]) EMP 테이블에서 직책이 MANAGER인 사람은 급여의 10%를 인상한 급여, SALESMAN인 사람은 급여의 5%, ANALYST인 사람은 그대..

DB/Oracle

[오라클 함수] NULL 처리 함수

NULL 함수 NULL은 연산이 불가능하다. 오라클은 NULL일 경우 연산을 하기 위해 NULL값을 다른 데이터로 변환하는 NVL과 NVL2 함수를 사용한다. NVL 함수 NVL 함수는 첫 번째 입력 데이터가 NULL이면 두 번째 입력 데이터 값으로 저장하고, NULL이 아닐경우 그대로 첫 번째 입력값이 그대로 반환된다. NVL([NULL인지 여부를 검사할 데이터 또는 열(필수)], [앞의 데이터가 NULL일 경우 반환할 데이터](필수)) NVL 함수를 통해 급여외 수당(COMM)이 NULL이면 0으로 대체하고 0이 아니면 그대로 값을 출력하는 쿼리문을 작성해보자. SELECT EMPNO, ENAME, SAL, COMM, SAL+COMM, NVL(COMM, 0), SAL+NVL(COMM, 0) FROM ..

DB/Oracle

[오라클 함수] 형 변환 함수

형 변환 함수 오라클은 다양한 데이터 종류의 자료형을 제공한다. 잘못된 자료형의 사용으로 인해 즉, 잘못된 형 변환으로 인해 오류가 발생한다. Query 출력값 사원 'SCOTT'의 사원번호와 문자열 'ABCD'를 사원번호와 합친 데이터를 출력하려했다. 하지만 문자열+숫자는 타입이 맞지않아 'invalid number'에러 즉 수치가 부적합하다는 오류가 발생했다. 이처럼 형번환의 문제를 해결하기 위해 오라클은 다음과 같이 세 종류의 형 변환 함수를 제공한다. 종류 설명 TO_CHAR 숫자 또는 날짜 데이터를 문자 데이터로 변환 TO_NUMBER 문자 데이터를 숫자 데이터로 변환 TO_DATE 문자 데이터를 날짜 데이터로 변환 날짜, 숫자 데이터를 문자 데이터로 변환하는 TO_CHAR 함수 TO_CHAR ..

DB/Oracle

[오라클 함수] 날짜 함수

날짜 함수 오라클은 날짜 데이터를 다루는 다양한 함수를 제공한다. 날짜 데이터를 다루는 함수를 하나씩 알아보도록 하자. 몇 개월 이후 날짜를 구하는 ADD_MONTHS 함수 오라클은 특정 날짜에 지정한 개월 수 이후 날짜 데이터를 번환하는 ADD_MONTHS 함수를 제공한다. ADD_MONTHS([날짜 데이터(필수)], [더할 개월 수(정수)(필수)] 현재 날짜에 3개월을 더한 결과를 ADD_MONTHS 함수를 쿼리문을 통해 출력해보자. 글을 작성하는 오늘 날짜는 2022년 2월 9일이다. ADD_MONTHS 함수를 통해 3개월 이후의 값을 구하면 22년 5월 9일 날짜가 정확히 나온다. ADD_MONTHS 함수의 대표 예시로 입사 10주년이 되는 사원들을 쿼리를 통해 출력해보자. 10주년이면 개월 수로..

각시탈코더
'SQL' 태그의 글 목록 (2 Page)