대표적으로 2가지 JOIN 에 대해서만 다루자 INNER JOIN NULL 을 허용하지 않을 때의 JOIN LEFT OUTTER JOIN NULL 이 있어도 상관 없음 ~ 오늘 다룰 주제는 JOIN 할 때 KEY 의 관계이다 조인을 사용하여 두 개의 테이블을 엮어 원하는 데이터를 추출할 수 있다. 이때, 두 테이블에서 키의 관계는 기본키(PK)와 외래키(FK) 관계로 맺어져야하고 이를 일대다 관계라 한다. [ 예시 ] 지점의 매출을 조회하는 쿼리를 작성하던 중 이런 결과를 얻게됐는데 정답보다 어마무시하게 큰 숫자가 나와버렸다. JOIN 을 걸 때, 같은 컬럼명이 있다면 냅다 다 연결해버렸는데 나중에 뜯어보니 관계가 이랬다. PF ↔ PF PF ↔ P P ↔ F 정확하게 말할순없지만 PF도 외래키라 외래키..
COALESCE > 문법 SELECT COALESCE( A,B) FROM TABLE; A,B 는각각 컬럼을 뜻한다. COALESCE 함수는 NULL 이 아닌 값을 리턴하는데, A가 NULL 이아니면 A를 리턴하다가 NULL 값을 가지면 B를 리턴한다. COALESCE(A,B,C ''' ) 이런식으로 N개의 컬럼을사용할 수 있다. > 예시 SELECT COALESCE(ITEM_NAME, '총 합계') AS 상품 , SUM(합계) AS 합계 FROM ( 생략 ) COALESCE 함수만 설명하기 위해 이하 쿼리는생략했다. 해당 쿼리는 ITEM_NAME을 리턴하고 마지막에 모든 합계를 계산 하는 쿼리이다. COALESCE(ITEM_NAME, '총 합계') 를 이용하여 ITEM_NAME 을 모두 리턴하고 NULL..
SUBSTR > 표기 SUBSTR( 문자열, 시작위치, 길이 ) ORD_DATE 컬럼에는 시간정보가 들어있다. (12시20분이면 1220 ,. 5시 10분이면 1710 이런식으로) SELECT SUBSTR(BO.ORD_TIME, 1, 2) 결과 시간 12 17 1 2 2 0 첫번째 문자열 -> 1 / 길이 -> 2 니까 12가 선택된다 || 연결 연산자 > 표기 '문자'|| '문자' 위의 예제에서 숫자만 표기하기보다 '시'를 붙여서 표기하고 싶다! SELECT SUBSTR(BO.ORD_TIME, 1, 2) || '시' AS 시간대
상품코드(ITEM_CODE)는 문자열 이다. 근데 저렇게 1번인데 0~~ 이렇게 되있으니까 보기싫다 이걸 숫자로 바꿔보자 1) TO_CHAR - TO_NUMBER 함수 SELECT TO_CHAR(TO_NUMBER(BI.ITEM_CODE)) AS 상품코드 , BI.ITEM_NAME AS 상품명 , COUNT(BOI.ORD_CODE) AS 판매량 FROM BURGER_ITEM BI JOIN BURGER_ORD_ITEM BOI ON BI.ITEM_CODE = BOI.ITEM_CODE GROUP BY TO_CHAR(TO_NUMBER(BI.ITEM_CODE)), BI.ITEM_NAME; 2 ) TRIM - LEADING SELECT TRIM(LEADING '0' FROM BI.ITEM_CODE) AS 상품코드 ,..
[ 문제 ] 특정기간 내 조회를 하려하는데 죽어라 안나온다 SELECT BI.ITEM_NAME , BOI.PRICE * COUNT(BOI.ORD_CODE) AS 매출액 FROM BURGER_ORD_ITEM BOI JOIN BURGER_ITEM BI ON BOI.ITEM_CODE = BI.ITEM_CODE JOIN BURGER_ORD BO ON BOI.ORD_CODE = BO.ORD_CODE WHERE BO.ORD_DATE BETWEEN ('2018-03-01') AND ('2018-03-31') GROUP BY BI.ITEM_NAME , BOI.PRICE; 띠용 조회 조건이 잘못된건지 이래저래 고쳐가며 해봐도 안됐다. 2018-03-01 이래 데이터가 없는 것도 아니었다. WHERE BO.ORD_DATE..
FROM 절에서 SELECT 문 사용 데이터 원본을 지정하고 가져올 열을 선택 데이터 원본으로부터 필요한 데이터를 가져오기 위해 사용 FROM 절에서 사용한 SELECT 문은 데이터베이스가 가져올 데이터의 원본과 필요한 열을 명시하는 역할을 함 -> 내가 생각한 개념 조회는 해야겠고, 그 조회결과를 컬럼명에 포함시키고 싶진않을 때 FROM 절에서 검색하고 SELECT 절에서 원하는 것만가져옴 또는 이중 집계 함수를 사용할 수 없는 경우 WHERE 절에서 SELECT 문 사용 가져올 데이터의 조건을 지정 WEHRE 절은 특정 조건을 만족하는 데이터만 가져오기 위해 사용 WEHRE 절에서 사용한 SELECT 문은 데이터베이스가 가져올 데이터를 필터링하여 특정조건에 맞는 데이터만 선택하는 역할
INNER JOIN JOIN 테이블 간의 일치하는 값을 기준으로 행을 결합 조인 조건에 부합하는 행만 결과에 포함된다. LEFT JOIN LEFT OUTER JOIN 내 머리속에 OUTER JOIN 은 LEFT JOIN 밖에 없다.( RIGHT, FULL 은 사용하지않을 것임 ) 왼쪽(첫 번째) 테이블의 모든 행을 결과에 포함하고, 오른쪽(두번째) 테이블과 일치하는 행이 있으면 해당 행을 결합 만약 일치하는 행이 없는 경우에는 오른쪽 테이블의 값은 NULL 로 채워진다. 사용 테이블간 조인을 하기전 관계를 따져볼 때, 해당값이 MUST 인지 보아야한다 즉, NULL 값을 허용하냐 하지않느냐 이다 INNER JOIN 은 조건에 부합하는 결과만을 필요로 하므로 NULL 값을 포함하지않는다 LEFT JOIN ..
분석함수 테이블에 있는 컬럼에 대해 특정 그룹별로 집계값을 산출할 때 사용 되는 함수 PARTITION BY OVER 절과 함께 사용 OVER 절 내에서 데이터를 분할하는 데 사용 데이터 집합을 여러 그룹으로 분할 할 수 있음 이때, 각 그룹은 PARTITION BY 절에 지정된 열 또는 표현식의 고유한 값을 가진다 그룹별로 별도의 계산이나 집계 함수를 적용할 수 있다. GROUP BY 절 대신 사용 SELECT emp_name, jikup, salary, AVG(salary) OVER (PARTITION BY jikup) AS avg_salary FROM employee; 위에서 PARTITION BY 절은 jikup 열을 기준으로 데이터를 그룹화 한다 AVG 함수를 사용하여 각 그룹 내에서 평균 연봉..