DB는 Pluggable Database 라고 하는 가상 저장소들의 집합으로 구성됨. sqlplus로 접속한 일반DB는 실제 저장소가 되며 이 DB를 다루다가 문제가 발생하면처리하기 까다롭다. 따라서 PDB를 사용하므로 문제 발생시 처리에 대한 리스트를 줄일 수 있다.
SYS : 데이터베이스 백업, 스케쥴링 등의 업무를 하는 경우 (sysdba)SYSTEM : 일반 관리계정Database는 관리하고자하는 데이터를 테이블 형태로 관리하고 있음. : 임시로 사용할 수 있는 저장소 준비(트랜젝션)
\-> NUMBER(\*,5) 38개짜리 숫자가 만들어지는것. !\[](https://velog.velcdn.com/images/kyky7896/post/660dd737-6eee-- 44e2-ae8a-3a66ade44954/image.png)TIMESTAMP
MEMBER 테이블 생성하기 오라클 데이터 형식 Character 형식
안넣은 값들 : NULL 값이 들어갈것임. oracle 서버는 사용자의 접속정보를 따로 관리하고 있음. 접속정보가 다르면 사용자가 다르다고 생각함. == 세션이 다르다.
계좌이체를 처리해달라고 함 => 업무적인 단위의 실행한사람의 계좌에서 금액을 내리고 올림 => 다른사람의 계좌에서 금액을 내리고 올림 : 물리적인 명령어 단위한쪽에서 금액을 올리고, 다른 사람의 계좌에서금액을 내릴때 그 계좌가 깡통이라면? : 이런일이 발생해서는 안된다
\+,-,\*,/공지사항의 조회수를 조회하시오. 단 기존값에 1을 더해서 조회하시오|| : 문자열을 더해주는 연산자모든 회원의 이름을 조회하시오. 단 이름은 ID를 붙여서 나타내시오.=, !=, ^=, <>, >, <, >=, <=, IS NULL, I
(페이징) rownum = 일련번호 => 결과 안나옴rownum이 결과집합이 있을때 만들어지는게 아니라테이블과 같이 일련번호를 가지고 있었다면 가능함.
윈도우 함수 종류 그룹 내 순위 그룹 내 집계 그룹 내 행 순서 관련 그룹 내 비율 관련 윈도우 함수 문법 `SELECT WINDOW_FUNCTION (ARGUMENTS) OVER ([PARTITION BY 컬럼] [OREDER BY 절] [WINDOWING 절])
CONNECT BY START WITH : 상하관계를 질의하는 쿼리, 연속된 숫자를 조회할 때 활용함. 현업에서는 보통 연속된 날짜를 조건으로 하는 쿼리를 조회할때 쓰는거 같다.1~10 까지 연속된 숫자 조회2020년 01월~12월까지 조회이번달 날짜 조회하기매월 1일
문제 : 설명 : 원래 했다가 실패한 sql문은 20221016에 집중한 case when 문을 만들었다. 까지 만들었으나. 이 문장을 어떤식으로 바꿔야할지 알지못했음. 이후 서브쿼리를 이용한 방식으로 기간 내에 들어가는 ID가 아닌경우에는 '대여가능' 들어가는 경우에
https://school.programmers.co.kr/learn/courses/30/lessons/131124where까지는 작성했으나 .. 서브쿼리를 작성하지 못했다. member_id를 개수별로 그룹바이해서. 개수로 orderby 하고 1개만 limi
내가 작성한 틀린코드왜 틀렸는지 처음엔 알수없었다. 맞는 코드\`\*3개로 표시한 부분을 보면 where 내부의 select 절에서 범위가 08월에서 10월사이인 car_id 만을 뽑아서 car_id 만이 뽑혀있는 상태이다. where의 select조건절은 car_id
내가 맞춘 문제
내가 처음에 짠 쿼리 : 안됨 왜일까?출처 : https://school.programmers.co.kr/questions/38854GROUP BY 로 묶으면 가장 상단에 있는 데이터를 임의로 가져옴. SELECT를 해도 최대값을 가져오는 것이 아니라. 그룹화
생각하지 못한것LEFT OUTER JOIN을 쓰는것. (입야을 간 동물중!)ORDER BY 에 -가 들어갈수 있는것을 간과한것.
풀이에서의 포인트CASE WHEN ... THEN .. 문을 쓰는것현업에서도 CASE WHEN 문을 가장 많이 봤다.가장 자신있게 풀어서 맞춤! 신나
처럼 사용하려고 했으나, or이 들어가는 구문이기 때문에 Milk만 있는경우와 Yogurt만 있는 경우 둘다 들어가게된다. > 정답 위와 같은 경우 우유가 들어가는 경우와 요거트가 들어가는 경우의 교집합을 만들어서 둘다 들어가는 경우를 만들수 있다. 서브쿼리로
정답간단하게 풀어버린 문제 ! 기분좋아좋아
정답INNER 조인을 이용해 카테고리별로 최고가격의 테이블을 하나 만들어준 다음 category와 price가 같은 row를 기준으로 select 해온다.
https://school.programmers.co.kr/learn/courses/30/lessons/157339정답 내가 체크못한부분은 ''로 표시함.2022년 11월 1일부터 2022년 11월 30일까지인 CAR_IDCAR_RENTAL_COMPANY_CA
정답좀 어이없는 문제였다 '서울시%'라고 하면 안되고 '서울%'이라고 해야함.. 그래도 답 안보고 푼 문제들 중에 하나!
세가지 테이블이 있을때 1) 하나는 메인테이블3) 하나는 메인테이블의 서브테이블(히스토리 테이블)3)의 메인테이블의 서브테이블은 '저장' 이라는 버튼을 눌러야지 히스토리가 INSERT됨 (처음은 INSERT, 두번째는 UPDATE(DEL_YN='Y'로)와 INSERT가
https://school.programmers.co.kr/learn/courses/30/lessons/131532정답마지막 컬럼에 DISTINCT를 넣어주는것이 포인트였다. 문제풀이 예시를 보면, 1월에 PRODUCT_ID 54와 3을 구매한 USER_ID가
where 조건 보지못해서 틀렸지만, 넣으니까 맞출수 있었던 문제
https://school.programmers.co.kr/learn/courses/30/lessons/131537
https://school.programmers.co.kr/learn/courses/30/lessons/59413?language=oracle
case when 으로 처리하려고 했음 그러나 더 좋은 방법이 있었다! 항상 값을 어떻게 고칠지를 생각할것
https://leetcode.com/problems/managers-with-at-least-5-direct-reports/description/?envType=study-plan-v2&envId=top-sql-50셀프조인을 활용하는 방법. 그룹바이 함수로
https://leetcode.com/problems/confirmation-rate/?envType=study-plan-v2&envId=top-sql-50left outer join 까지는 함.confirmed일때를 1, 아닐때를 0으로 두고 user_id
https://leetcode.com/problems/monthly-transactions-i/description/?envType=study-plan-v2&envId=top-sql-50알게된것case when 과 sum의 콜라보가 중요!then 뒤에는 컬럼명
https://leetcode.com/problems/immediate-food-delivery-ii/description/?envType=study-plan-v2&envId=top-sql-50문제) 문제 뜻ORDER_DATE와 CUSTOMER_PREF_DEL
https://leetcode.com/problems/percentage-of-users-attended-a-contest/?envType=study-plan-v2&envId=top-sql-50문제요약콘테스트에 참여한 user수 / 총 user수 를 구하여라!
문제요약Units Sold의 purchase_date가 Prices의 start_date와 end_date사이에 있고, 두 product_id가 동일한경우를 구하고그 product_id의 평균을 구하여라 (가격\*수량)/수량핵심포인트inner join, group by
https://leetcode.com/problems/replace-employee-id-with-the-unique-identifier/description/?envType=study-plan-v2&envId=top-sql-50문제요약 employeeuni
https://leetcode.com/problems/rising-temperature/description/?envType=study-plan-v2&envId=top-sql-50 > 문제요약 이전날짜(어제)보다 높은온도를 가진 row의 id를 출력하라 > 첫번째
문제요약bonus가 1000 미만인 직원의 이름과 보너스를 출력해라!포인트employee테이블엔 있고 bonus에는 없는(보너스를 받지않는) 직원이 있기 때문에 employee테이블을 중심으로 join 해줘야함. (left조인)또한 보너스가 널값일때도 출력해줘야한다!
https://leetcode.com/problems/average-time-of-process-per-machine/description/?envType=study-plan-v2&envId=top-sql-50문제요약각 머신의 끝-시작의 시간을 구한뒤 각 머신
문제해설student가 참석한 과목의 이름과 참석한 과목의 횟수를 구해야함.팁처음에 세 테이블을 outer join 시키려고 했으나, subject_name이 없는, Bob의 Physics같은 경우에는 참석하지 않아서 0이 나오지 않았다 그러므로 student와 sub
문제 해석쿼리이름과 quality = (rating/position)poor_query_percentage = rating이 3보다 작은 row의 개수 / 전체 개수를 구해서 %를 구하는것포인트두번째 rating/position는 구했으나, 세번째case when 을
https://leetcode.com/problems/product-sales-analysis-iii/submissions/?envType=study-plan-v2&envId=top-sql-50문제 해설각 제품이 팔린 첫번째 년도를 구해라. 힌트partitio
문제설명5명 이상의 학생이 수업을 듣는 클래스를 써라핵심 포인트row별로 갯수를 구해야하므로 파티션 함수를 사용했다.Math면 Math별로 1,2,3,4,5... 이런식으로 row값을 출력해야함.partition by 함수정답다른 사람이 작성한 정답클래스로 그룹바이 후