sql 17

PLSQL이란? - 세기무민

이번에 다뤄볼 내용은 PLSQL입니다 PLSQL? PLSQL은 상용 관계형 데이터베이스 시스템인 SQL 확장성 프로그래밍 언어 중 하나이다. PLSQL은 SQL 문장으로 처리하기 어려운 내용을 프로시저 및 트리거로 작성하는데 자주 사용된다. PLSQL 장점 1. PLSQL은 오라클 서버 및 툴들에 일관적이고 중심적인 역할을 수행하기 떄문에 통합 관리 및 이식성이 가능하다. 2. 절차적인 언어 프로그래밍 언어가 가지고 있는 다양한 기능들을 제공한다. 3. 프로그램 모듈화 개발을 지원한다. PLSQL 예시 declare l_today date := sysdate; begin if to_char(l_today,'D') < 4 then dbms_output.put_line( '일주일 절반도 아직 안지남'); e..

DB/SQL 2022.07.12

[세무민의 코딩일기] : 오라클 시퀀스 조회 번호 확인하기

안녕하세요 세기무민입니다. 이번에 다룰 포스팅은 USER_SEQUENCES입니다. 우선 Oracle 문서에서 확인한 정의는 위와 같습니다. 즉 USER_SEQUENCES는 현재의 사용자가 소유한 시퀀스를 모두 보여줍니다. 타입은 VIEW입니다. 해당 뷰의 컬럼은 아래와 같습니다. 아래의 컬럼은 ALL_SEQUENCES의 컬럼이며 USER_SEQUENCES와 같습니다. 컬럼 명 컬럼 내용 SEQUENCE_OWNER 시퀀스의 소유자 SEQUENCE_NAME 시퀀스 이름 MIN_VALUE 시퀀스의 최소값 MAX_VALUE 시퀀스의 최대값 INCREMENT_BY 시퀀스가 증가하는 값 CYCLE_FLAG 시퀀스 순환 여부 ORDER_FALG 시퀀스 번호 순서 생성 여부 CACHE_SIZE 시퀀스의 캐시 크기 LA..

DB/SQL 2022.02.23

[세무민의 코딩일기] : 오라클 프로시저 및 함수 내용 찾기

안녕하세요 세기무민입니다. 이번에 다룰 포스팅은 오라클을 사용하다보면 프로시저와 함수를 만드는데 만약 프로시저와 함수가 엄청 많다면 모든 내용을 들어가서 확인하는건 비 효율적입니다. 따라서 프로시저와 함수 내에서 내용을 찾는 쿼리를 알아보도록 하겠습니다. /** * 프로시저 내 포함된 내용 찾기 */ SELECT * FROM USER_SOURCE WHERE 1=1 AND TYPE= "PROCEDURE"-- 타입 : 프로시저 AND TEXT LIKE '%%'-- 찾으려는 텍스트 입력 /** * 함수 내 포함된 내용 찾기 */ SELECT * FROM USER_SOURCE WHERE 1=1 AND TYPE= "FUNCTION"-- 타입 : 함수 AND TEXT LIKE '%%'-- 찾으려는 텍스트 입력 우선..

DB/SQL 2022.02.21

[세무민의 코딩일기] LeetCode Exchange Seats 문제풀이

오늘 풀어볼 문제는 LeetCode의 Exchange Seats 문제입니다. 1. 문제 및 예시 2. 문제풀이 이번 문제는 앞뒤로 바꾸는 쿼리 결과를 조회하면된다. 그렇다면 곰곰히 생각해보면 2의 배수의 경우는 앞뒤로 변경이 가능하지만 2의 배수에서 -1인 경우는 마지막의 값은 변경이 불가능하다. 이 말은 즉슨 Mod(ID, 2) = 1 공식에 따라서 문제를 풀면 된다. 3. 코드 /** * LeetCode : Exchange Seats * URL :https://leetcode.com/problems/exchange-seats/ */ SELECT ID, IFNULL(CASE WHEN MOD(ID, 2) != 0 THEN LEAD(student) over() ELSE LAG(student) over() ..

Algorithm/leetCode 2022.02.11

[세무민의 코딩일기] LeetCode Trips and Users 문제풀이

오늘 포스팅 할 내용은 LeetCode에서 Trips and Users문제를 풀어봤습니다. 1. 문제 설명 2. 문제 예시 3. 문제 풀이 이번 문제는 driver_id와 client_id만 잘 구분해주면 된다. 말 그대로 cancel의 확률을 구하면 되는데 사용자 중 banned가 yes라면 제외한 확률을 구해주면 된다. 그래서 날짜별로 평균값을 구해주면 되는 문제이다. /** * LeetCode : Trips and Users * URL :https://leetcode.com/problems/trips-and-users/ */ /* * AVG 사용 */ select trip_totals.day, ,round(avg(trip_totals.status like '%cancel%'), 2) as "Canc..

Algorithm/leetCode 2022.01.17

[세무민의 코딩일기] LeetCode Rising Temperature문제풀이

오늘 포스팅 할 내용은 LeetCode 문제 중 하나인 Rising Temperature문제를 풀어봤습니다. 1. 문제 설명 2. 문제 예시 3. 문제 풀이 이번 문제는 전일 대비 온도가 높은 ID를 출력해주면 됩니다. 그렇다면 해당 문제를 접근한는 방법은 현재일과 현재일에서 DATE_ADD를 통해 1일을 추가한 일자와 비교하여 온도를 비교해주면 된다. 또 다른 방법은 DATEDIFF를 이용하여 날짜의 차이가 1일인 경우 온도를 비교해주면 된다. /** * LeetCode : Rising Temperature * URL : https://leetcode.com/problems/rising-temperature/ */ # DATEDIFF를 통해 날짜의 차이를 구하는 방식 select w1.id from W..

Algorithm/leetCode 2022.01.13

[세무민의 코딩일기] LeetCode Duplicate Emails 문제풀이

오늘 포스팅 할 내용은 LeetCode 문제 중 하나인 Duplicate Emails문제를 풀어봤습니다. 1. 문제 설명 2. 문제 예시 3. 문제 풀이 이번 문제는 이메일 중복이 존재한다면 해당 중복 이메일을 출력해주면 되는 문제입니다. 이 문제에서는 가장 쉽게 할 수 있는건 이메일로 Group by를 한 뒤 1개 이상인 이메일을 출력해주면 됩니다. 다른 방법으로는 서브쿼리에서 email의 count를 구하여 1개 이상의 값을 구하면 됩니다. # 서브 쿼리 사용 select duals.email as Email from ( SELECT id, email, count(email) as numEmail from Person group by email ) as duals where duals.numEmail..

Algorithm/leetCode 2022.01.11

[세무민의 코딩일기] LeetCode Second Highest Salary 문제풀이

오늘 포스팅 할 내용은 LeetCode 문제 중 하나인 Second Highest Salary 문제를 풀어봤습니다. 1. 문제 설명 2. 문제 예시 3. 문제 풀이 이번 문제는 말 그대로 2번째로 급여가 높은 사용자의 급여를 출력하면 되며 만약에 2번째로 높은 급여가 없는 경우 Null을 출력하면 된다. 위의 경우를 가장 쉽게 생각해보면 가장 Max의 값을 제외한 값이 2번째의 값이다. 따라서 Max인 값을 제외하고 가장 첫번째의 값을 출력하면 된다. # Time : 482ms SELECT max(salary) as SecondHighestSalary FROM Employee where not salary = (select max(salary) from Employee) # Time : 735ms SEL..

Algorithm/leetCode 2022.01.09

[세무민의 코딩일기] LeetCode Nth Highest Salary 문제풀이

오늘 포스팅 할 내용은 LeetCode에 있는 Nth Highest Salary 문제를 풀어봤습니다. 1. 문제 설명 2. 문제 및 예시 3. 문제 풀이 이번 문제는 해석하면 N이라는 특정 값을 입력했을 때 해당 순위의 Salary를 출력하고 없는 경우라면 Null을 출력하는 문제이다. 또한 이번 문제는 N을 입력을 해주기 때문에 DB Function을 이용한 문제라는 것도 알아야 한다. CREATE FUNCTION getNthHighestSalary(N INT) RETURNS INT BEGIN RETURN ( SELECT distinct salary FROM (SELECT id, salary, dense_rank() over(order by salary desc) as totals from Employ..

Algorithm/leetCode 2022.01.08

[세무민의 코딩일기] 프로그래머스 : 우유와 요거트가 담긴 장바구니 문제 풀이

오늘 포스팅 할 내용은 Summer/Winter Coding(2019) 문제에 나온 우유와 요거트가 담긴 장바구니 문제를 풀어봤습니다. 1. 문제 설명 2. 문제 및 예시 3. 문제 풀이 이번 문제는 위의 내용처럼 우유와 요거트 2개를 모두 가지고 있는 CART_ID를 구하면 됩니다. 그렇기 때문에 조건식에 우유와 요거트가 각각 존재하는지 구분하여 검색해주면 됩니다. ## 방법 1 SELECT DISTINCT CART_ID FROM CART_PRODUCTS WHERE NAME = 'Milk' AND CART_ID IN (SELECT DISTINCT CART_ID FROM CART_PRODUCTS WHERE NAME = 'Yogurt') ## 방법 2 SELECT DISTINCT milk_tb.CART_I..