Programmers/Oracle 4

[ ANSI JOIN ] , [ Oracle Join ] - 배송 예정일과 도착일 비교

Question ) 잘못 입력한 데이터 값 찾기 1. 동물의 아이디와 이름을 조회 2. 보호 시작하고 -> 입양을 보내는 과정이 맞는데 3. 보호를 하다가 입양을 보낸 입양일이 4. 보호소에 들어온 보호 시작일보다 빠른 경우의 동물 5. 보호 시작일이 빠른 순으로 조회 #풀이 1 - 안시조인( ANSI JOIN ) 을 이용하여 풀이 #풀이 2 - 오라클 조인( Oracle Join ) 을 이용하여 풀이 review where문이 익숙해서일까 Oracle Join이 아직은 직관적으로 이해하기 좋다. 하지만 어떤 DB를 사용하게 될지 모르니 안시 조인도 눈에 익히도록 많이 사용해보고 생각해 보자 제목은 "배송 예정일과 도착일 비교"라고 지었는데 주문 테이블의 배송 예정일과 배송 테이블의 도착일을 비교해서 며..

Programmers/Oracle 2022.06.07

[ LEFT/RIGHT OUTER JOIN ] [ NOT IN ] - 한쪽에만 있는 정보 뽑아오기

#문제 설명 기관에 들어온 기록은 없고(유실) 입양 보냈다는 기록은 있는 상태의 동물 id와 이름을 조회 # 풀이 1 - LEFT OUTER JOIN 을 이용하여 풀이 # 풀이 2 - RIGHT OUTER JOIN 을 이용하여 풀이 + AND B.NAME IS NOT NULL 조건 안 해주면 + RIGHT OUTER JOIN 이기 때문에 입양 테이블 데이터 다 살려줌 + 기관에 들어온 기록이 없는 동물이 맞지만, 입양된 기록도 없는 동물이다. 조건에 맞지 않음 ## LEFT OUTER JOIN 사용한 경우 :: 결과표에 왼쪽 테이블 기준 : 왼쪽 테이블에서 조건에 맞지 않아서 매칭 안된 - 남아있는 ROW 모두 출력 오른쪽 테이블 있는 - 매칭 안된 데이터 ROW들은 안 나옴 ## RIGHT OUTER ..

Programmers/Oracle 2022.06.03

[ HAVING ] 두 번이상 주문한 사람의 이름과 횟수 알아내기

QUESTION) 동명 동물 수 찾기 1. 두 번 이상 쓰인 이름과 2. 해당 이름이 쓰인 횟수 3. 이름이 없는 동물은 집계에서 제외 4. 이름 순으로 조회 ## 문제풀이 전 개념 플러스 count(컬럼 명)은 null을 무시하고 집계하지만, count(*)는 null까지 포함해서 개수를 집계 ## 문제해결 1 GROUP BY 조건으로 그룹 나눠준 후 HAVING 이용하여 다시 한 번 조건 체크 ++ WHERE 절은 생략가능 - WHY? COUNT(칼럼) 해주면 NULL제외하고 집계해주기 때문에 ## 문제해결 2 서브 쿼리 이용 - 각각의 이름이 몇 번 쓰였는지 뽑아낸 뒤 그 중 2번 이상 사용한 이름과 횟수 뽑아내기. ## 서브 쿼리문 체크 ## CHECK GRUOP BY로 그룹을 나눠주기 않으면! ..

Programmers/Oracle 2022.06.01

[ LIMIT, MIN-MAX ] 가장 먼저 들어온 값 1개 / 가장 늦게 들어온 값 1개

Question) 보호소에 가장 먼저 들어온 동물의 NAME을 출력! # 방법 1 ORDER BY 문으로 오름차순 정렬한 후 LIMIT 1 명령으로 하나의 값 가져오기 # 방법 2 서브쿼리 이용 - DATETIME의 최소 값을 얻은 다음 WHERE 조건으로 그 값과 같은 값으로 반환 Question) 보호소에 가장 먼저 들어온 동물의 NAME을 출력! # 방법 1 ORDER BY 문으로 내림차순 정렬한 후 LIMIT 1 명령으로 하나의 값 가져오기 # 방법 2 서브쿼리 이용 - DATETIME의 최대 값을 얻은 다음 WHERE 조건으로 그 값과 같은 값으로 반환

Programmers/Oracle 2022.06.01