Database
-
LAG LAG 함수는 데이터의 몇 번째 이전 행의 값을 가져옵니다. 사용법은 다음과 같습니다.(LAG, LEAD 함수가 동일합니다) LAG(Column, N, '') / LEAD(Column, N, '') 첫 번째 인자는 비교할 컬럼 두 번째 인자는 몇 번째 이전(또는 이후) 행의 값을 가져올지. 입력하지 않을 경우, Default = 1 세 번째 인자는 첫 번째(또는 LEAD의 경우 마지막) 행의 값이 Null이 조회될 때 바꿔줄 값 예제를 하나 만들어보겠습니다. 빵 유통기한을 오름차순으로 정렬하고 각각의 빵 유통기한과 해당 빵 이전에 유통기한 날짜를 확인해보겠습니다. WITH TESTDB AS( SELECT 1001 BNUM, '크림빵' BNAME, '20190301' BYMD FROM DUAL UN..
[Oracle]LAG, LEAD 2019. 3. 14. -
오라클에서 공백 제거를 위해 사용할 수 있는 함수는 TRIM()과 REPLACE()가 있습니다. TRIM(), RTRIM(), LTRIM() TRIM : 문자열의 양쪽 공백을 제거 LTRIM : 문자열이 시작되는 부분의 공백 제거 RTRIM : 문자열의 끝 부분의 공백 제거 WITH TESTDB AS( SELECT '20123153' HAKBUN, '김 우근' ENAME FROM DUAL UNION ALL SELECT '20132477' HAKBUN, '박 상후' ENAME FROM DUAL UNION ALL SELECT '20146348' HAKBUN, '배 철수' ENAME FROM DUAL ) SELECT HAKBUN, ENAME FROM TESTDB TESTDB 각 컬럼에는 그림과 같이 공백이 있..
[Oracle]공백 제거 2018. 9. 28. -
현재 시간을 입력할 때 오라클에서는 SYSDATE를 입력하면 되지만 MySQL에서는 안됩니다. MySQL에서 현재 시간을 입력하는 방법은 두 가지가 있습니다. 1) 날짜가 들어갈 컬럼(BOARD_YMD)의 데이터 타입을 TIMESTAMP DEFAULT NOW()를 주고 INSERT 시 DEFAULT값을 입력하는 방법 CREATE TABLE BOARD( BOARD_NO INT NOT NULL AUTO_INCREMENT, BOARD_TYPE VARCHAR(20) NOT NULL, BOARD_TITLE VARCHAR(30), BOARD_CONTENT TEXT, BOARD_CNT INT DEFAULT 0, BOARD_USER VARCHAR(20) NOT NULL, BOARD_YMD TIMESTAMP DEFAUL..
[MySQL]현재 시간 입력 2018. 9. 12. -
CASE WHEN ELSE END 프로그래밍 언어에서 switch case문이 있듯 오라클에서도 case문 사용이 가능합니다. 사용법은 간단합니다. CASE 대상 WHEN 조건1 THEN 결과1 WHEN 조건2 THEN 결과2 WHEN 조건3 THEN 결과3 (ELSE 결과) END 이러한 형태로 대상값이 조건을 만족하는 결과를 출력합니다. 조건에 해당하지 않는 경우는 ELSE로 처리할 수 있습니다. 간단한 사용 예제입니다. WITH TESTDB AS( SELECT '햇빛' STAT, '' CONTENT FROM DUAL UNION ALL SELECT '구름' STAT, '' CONTENT FROM DUAL UNION ALL SELECT '우산' STAT, '' CONTENT FROM DUAL UNION..
[Oracle]CASE문 2018. 9. 2. -
CUBE 지난 글에서 아래와 같은 테이블이 있다고 했을 때, ROLLUP을 사용해서 각 학부별 등록금 총액과 학생 수를 구할 수 있었습니다. [각 학부별 등록금 총액과 학생 수] 그럼 학부(HAKBU)말고 학과(DEP)에 대한 등록금 총액과 학생 수를 구하기 위해서는 어떻게 해야 할까요? 방법은 있다. 학과에 대해 ROLLUP을 사용하여 UNION ALL로 연결시켜주면 됩니다. 하지만 CUBE를 사용하면 더 편하게 결과를 구할 수 있습니다. SELECT HAKBU, DEP, SUM(PAY) PAY, COUNT(SNO) S_COUNT FROM TESTDB GROUP BY CUBE(HAKBU, DEP) ORDER BY HAKBU 빨간 표시된 부분을 보면 학과에 대한 등록금 총액과 학생 수를 확인할 수 있습니..
[Oracle]CUBE 2018. 8. 22. -
ROLLUP ROLLUP함수는 GROUP BY절과 함께 사용됩니다. ROLLUP을 이용하면 GROUP BY절로 집계된 결과에 더 자세한 정보를 확인할 수 있습니다. 테이블을 하나 만들어 테스트해보겠습니다. TESTDB라는 테이블을 생성했습니다. 각각의 컬럼은 다음과 같습니다. SNO : 학번 SNAME : 학생명 HAKBU : 학부 DEP : 전공학과 PAY : 등록금 이제 이 테이블을 이용해서 ROLLUP이 어떤 기능을 하는지 확인해보겠습니다. SELECT HAKBU, DEP, SUM(PAY) PAY, COUNT(SNO) S_COUNT FROM TESTDB GROUP BY HAKBU, DEP ORDER BY HAKBU 먼저 학부의 학과별 등록금의 총액과 학생 수를 조회해보겠습니다. 위와 같이 학부의 학..
[Oracle]ROLLUP 2018. 8. 22. -
예전에 꽤 헤맸던 오류였는데 따로 메모해둔 자료가 있어서 기록을 해두려고 합니다.ORA-01417: 하나의 테이블은 하나의 다른 테이블과 포괄 조인할 수 있습니다이 에러는 대상 테이블을 두 개 이상의 테이블과 동시에 아우터 조인할 때 발생합니다. 아래 에러를 내기위해서 임의로 쿼리문을 만들었습니다.SELECT A.O_NM , B.O_NM , C.O_NMFROM ( SELECT 'C001' O_CD , 'A' O_NM FROM DUAL ) A ,( SELECT 'C002' O_CD , 'B' O_NM FROM DUAL ) B ,( SELECT 'C003' O_CD , 'C'..
[Error]ORA-01417: 하나의 테이블은 하나의 다른 테이블과 포괄 조인할 수 있습니다 2018. 8. 20. -
TRUNC TRUNC함수는 절삭 함수입니다. 소수점 자리를 지정하여 자르거나 날짜형식을 지정하여 자를 수 있습니다. 정확히는 해당 날짜형식 이외에는 초기화를 시켜버린다고 볼 수 있습니다. 소수점의 경우 ☞ TRUNC(숫자, 소수점 자리) SELECT TRUNC(2018.0817, 2) FROM DUAL (참고) -1 : 일의 자리부터 절삭 -2 : 십의 자리부터 절삭 -3 : 백의 자리부터 절삭 SELECT TRUNC(2018.0817, -1) FROM DUAL 날짜의 경우 ☞ TRUNC(날짜, 날짜형식) ※ 반드시 날짜타입으로 들어가야 합니다.(TO_DATE, 혹은 SYSDATE) 날짜형식 YYYY(년) SELECT TRUNC(TO_DATE('201808171130','YYYYMMDDHH24MI'), ..
[Oracle]TRUNC 2018. 8. 17.