oracle(26)
-
PIVOT XML
PIVOT을 이용한 년도별 입사 인원수 구하기SELECT * FROM (SELECT to_char(hire_date, 'yyyy') year, count(*) cnt FROM hr.employees GROUP BY to_char(hire_date, 'yyyy'))PIVOT (max(cnt) FOR year in ('2001' "2001", '2002' "2002", '2003' "2003", '2004' "2004", '2005' "2005", '2006' "2006", '2007' "2007", '2008' "2008"));오늘 PIVOT에 대해 배우며 한 가지 의문점이 생겼다.피봇 값들을 꼭 이렇게 상수로 하나하나 적어줘야 하는걸까?이 쿼리에서는 입사 연도가 2001년부터 2..
2025.10.24 -
251024 TIL
서브쿼리중첩 서브 쿼리(Cont.)단일행 비교 연산자 사용시 주의점서브쿼리에서 여러 개 값이 나올 경우 오류 발생SELECT *FROM hr.employeesWHERE salary = (SELECT min(salary) FROM hr.employees GROUP BY department_id); 다중행 서브 쿼리서브 쿼리의 결과가 여러 개의 값이 나오는 서브 쿼리다중 행 비교 연산자(IN, ALL, ANY)IN(= OR)SELECT *FROM hr.employeesWHERE salary IN (SELECT min(salary) FROM hr.employees GROUP BY departm..
2025.10.24 -
251023 TIL
문제-- [문제26] 80 부서에 근무하는 사원들의 last_name, job_id, department_name, city 출력해주세요.SELECT e.last_name, e.job_id, d.department_name, l.cityFROM hr.employees e, hr.departments d, hr.locations lWHERE e.department_id = d.department_idAND d.location_id = l.location_idAND e.department_id = 80;JOIN(조인)2. equi join (cont.)SELECT count(*)FROM hr.employeesWHERE department_id = 20; -- 2건SELECT e.last_name, e.job..
2025.10.23 -
251022 TIL
Null 관련 함수nullif(exp1, exp2)두 표현식(인수)을 비교해서 같으면 null을 리턴하고 같지 않으면 exp1을 리턴하는 함수PL/SQL에서 IF문IF exp1 = exp2 THEN return null;ELSE return exp1;END IF;SELECT employee_id, length(last_name), length(first_name), nullif(length(last_name), length(first_name))FROM hr.employees;lnnvlLogical Negation of NVL(NVL의 논리적 부정)조건절 FALSE 또는 NULL을 조회하는 함수아래의 경우 department_id is null 조건이 없으..
2025.10.22 -
251021 TIL
오라클 버전별 접미사i(8i, 9i) : Internet / 인터넷 환경, 웹 애플리케이션 지원을 강조g(10g, 11g) : Grid / 그리드(분산처리, 클러스터) 환경 지원을 강조c(12c, 19c) : Cloud / 클라우드 환경 및 컨테이너/서비스 형태 지원을 강조ai(23ai, 26ai) : Artificial Intelligence / AI/벡터 검색, 자연어처리, 생성형 AI 지원을 강조날짜날짜 함수SELECT sysdate, systimestamp, current_date, current_timestamp, localtimestampFROM dual;서버 시간sysdate : 현재 서버 날짜를 리턴하는 함수systimestamp : 현재 서버 날짜, 시간, 타임..
2025.10.21 -
251020 TIL
문제-- [문제9] employees 테이블에 있는 데이터 중에 job_id가 SA로 시작되고 salary 값은 10000이상 받고 2005년도에 입사한(hire_date)-- 사원들의 정보를 출력해주세요.SELECT *FROM hr.employeesWHERE job_id LIKE 'SA%'AND salary >= 10000AND hire_date BETWEEN TO_DATE('20050101', 'yyyymmdd') AND TO_DATE('20060101', 'yyyymmdd') - 1/24/60/60;-- [문제10] employees테이블에서 job_id 가 SA_REP 또는 AD_PRES 사원들 중에 salary값이 10000 초과한 사원들의 정보를 출력해주세요.SELECT *FROM hr.emp..
2025.10.20