[DB] 계정계, 정보계란? / OLPT, OLAP 비교
계정계 정의 - OLTP와 매핑되는 개념 - 은행의 전통적인 핵심 업무는 통장이 중심이 된다. 통장을 계좌, 계정이라고 한다. 계정을 관리하는 시스템이 모여있어서 계정계라고 부른다. - 금융권 영업점에서 실시간으로 고객의 거래를 처리하기 위한 업무 정보. 그래서 트랜잭션 단위로 발생. 예) 고객의 통장 정보(계좌번호, 입출금, 이체, 펀드, 주식 등) 계정계 특징 - 기본 데이터가 1억 건이 넘는다. 시스템장애는 곧 금전적 피해로 이어지기 때문에, 데이터를 2~3중으로 백업하는 등 매우 보수적으로 운영된다. - 기본적으로 원장(근원이 되는 장부)에 트랜잭션이 집중되는 구조이기 때문에, 안정적으로 트랜잭션을 처리하기 위한 미들웨어가 발달해있음. - 초기에는 IBM Mainframe을 사용했고, 2000년대..
[ORACLE] 'GROUP BY 구 없이 그룹 함수가 내포되었습니다' 에러
에러나는 상황 SELECT SUM(DECODE(DEPTNO, 10, COUNT(JOB), 0)) AS "10번부서", SUM(DECODE(DEPTNO, 20, COUNT(JOB), 0)) AS "20번부서", SUM(DECODE(DEPTNO, 30, COUNT(JOB), 0)) AS "30번부서" FROM EMP; 원인 - COUNT 함수는 그룹행 함수다. 여러 행이 한번에 들어가야하는데, DEPTNO가 10인 행의 데이터가 각각 인자로 들어가는 상황이다. - 여기서 GROUP BY가 필요한 이유는, DEPTNO가 10, 20, 30인 데이터를 각각 하나로 모우는 임시 테이블을 만들기 위해서다(뇌피셜) - 만들어진 임시 테이블에서는 전체 행이 각각 10, 20, 30일테니까 COUNT 함수를 사용할 수 ..
[ORACLE] 부서별 컬럼을 만들고, 직원 수를 나타내기(GROUP BY or 조건문 활용)
문제 다음과 같은 결과를 생성하는 SQL 작성 10번부서 20번부서 30번부서 3 5 6 정답1 SELECT SUM(DECODE(DEPTNO, 10, COUNT(DEPTNO), 0)) AS "10번부서", SUM(DECODE(DEPTNO, 20, COUNT(DEPTNO), 0)) AS "20번부서", SUM(DECODE(DEPTNO, 30, COUNT(DEPTNO), 0)) AS "30번부서" FROM EMP GROUP BY DEPTNO; 정답2 SELECT COUNT(CASE WHEN DEPTNO = 10 THEN 1 END) AS "10번부서", COUNT(CASE WHEN DEPTNO = 20 THEN 1 END) AS "20번부서", COUNT(CASE WHEN DEPTNO = 30 THEN 1 ..