울음참고 개발공부
article thumbnail
Oracle | JOIN 에서 KEY의 관계
Oracle 2023. 6. 2. 17:00

대표적으로 2가지 JOIN 에 대해서만 다루자 INNER JOIN NULL 을 허용하지 않을 때의 JOIN LEFT OUTTER JOIN NULL 이 있어도 상관 없음 ~ 오늘 다룰 주제는 JOIN 할 때 KEY 의 관계이다 조인을 사용하여 두 개의 테이블을 엮어 원하는 데이터를 추출할 수 있다. 이때, 두 테이블에서 키의 관계는 기본키(PK)와 외래키(FK) 관계로 맺어져야하고 이를 일대다 관계라 한다. [ 예시 ] 지점의 매출을 조회하는 쿼리를 작성하던 중 이런 결과를 얻게됐는데 정답보다 어마무시하게 큰 숫자가 나와버렸다. JOIN 을 걸 때, 같은 컬럼명이 있다면 냅다 다 연결해버렸는데 나중에 뜯어보니 관계가 이랬다. PF ↔ PF PF ↔ P P ↔ F 정확하게 말할순없지만 PF도 외래키라 외래키..

article thumbnail
Oralce | COALESCE 함수
Oracle 2023. 6. 2. 11:28

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..

article thumbnail
Oracle | SUBSTR() 문자열 자르는 함수 / 연결 연산자 ||
Oracle 2023. 6. 1. 15:40

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 시간대

article thumbnail
Oracle | 문자 -> 숫자 함수 TO_CHAR TO_NUMBER
Oracle 2023. 5. 30. 16:15

상품코드(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 상품코드 ,..

article thumbnail
Oracle | 특정 기간 내 데이터 구하기 - BETWEEN TO_DATE
Oracle 2023. 5. 25. 14:36

[ 문제 ] 특정기간 내 조회를 하려하는데 죽어라 안나온다 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..

article thumbnail
FROM 절, WHERE 절 에서의 SELECT
TIL 2023. 5. 24. 13:13

FROM 절에서 SELECT 문 사용 데이터 원본을 지정하고 가져올 열을 선택 데이터 원본으로부터 필요한 데이터를 가져오기 위해 사용 FROM 절에서 사용한 SELECT 문은 데이터베이스가 가져올 데이터의 원본과 필요한 열을 명시하는 역할을 함 -> 내가 생각한 개념 조회는 해야겠고, 그 조회결과를 컬럼명에 포함시키고 싶진않을 때 FROM 절에서 검색하고 SELECT 절에서 원하는 것만가져옴 또는 이중 집계 함수를 사용할 수 없는 경우 WHERE 절에서 SELECT 문 사용 가져올 데이터의 조건을 지정 WEHRE 절은 특정 조건을 만족하는 데이터만 가져오기 위해 사용 WEHRE 절에서 사용한 SELECT 문은 데이터베이스가 가져올 데이터를 필터링하여 특정조건에 맞는 데이터만 선택하는 역할

INNER JOIN / LEFT JOIN 개념과 언제쓰는지?
Oracle 2023. 5. 24. 09:55

INNER JOIN JOIN 테이블 간의 일치하는 값을 기준으로 행을 결합 조인 조건에 부합하는 행만 결과에 포함된다. LEFT JOIN LEFT OUTER JOIN 내 머리속에 OUTER JOIN 은 LEFT JOIN 밖에 없다.( RIGHT, FULL 은 사용하지않을 것임 ) 왼쪽(첫 번째) 테이블의 모든 행을 결과에 포함하고, 오른쪽(두번째) 테이블과 일치하는 행이 있으면 해당 행을 결합 만약 일치하는 행이 없는 경우에는 오른쪽 테이블의 값은 NULL 로 채워진다. 사용 테이블간 조인을 하기전 관계를 따져볼 때, 해당값이 MUST 인지 보아야한다 즉, NULL 값을 허용하냐 하지않느냐 이다 INNER JOIN 은 조건에 부합하는 결과만을 필요로 하므로 NULL 값을 포함하지않는다 LEFT JOIN ..

article thumbnail
Oracle | PARTITION BY
Oracle 2023. 5. 23. 13:15

분석함수 테이블에 있는 컬럼에 대해 특정 그룹별로 집계값을 산출할 때 사용 되는 함수 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 함수를 사용하여 각 그룹 내에서 평균 연봉..