쿼리공부 11

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

[세무민의 코딩일기] 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 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

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

오늘 포스팅 할 내용은 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..

[세무민의 코딩일기] 프로그래머스 : 헤비 유저가 소유한 장소 문제 풀이

오늘 포스팅 할 내용은 2021년도 Dev-Matching: 웹 백앤드 개발자 문제에 나온 헤비 유저가 소유한 장소 문제를 풀어봤습니다. 1. 문제 설명 2. 문제 및 예시 3. 문제 풀이 이번 문제는 말 그대로 HOST_ID가 2개 이상인 경우를 헤비 유저고 부른다. 따라서 HOST_ID가 1개 이상인 경우를 조회하면 된다. SELECT ID, NAME, HOST_ID FROM PLACES WHERE HOST_ID IN ( SELECT HOST_ID FROM PLACES GROUP BY HOST_ID HAVING COUNT(1) > 1 ); 위의 코드처럼 작성하여 1개 이상의 HOST_ID를 가진 값을 출력해줬다. 4. 결과 자세한 코드는 아래의 github에 업로드해놨습니다! GitHub - sg-m..

[세무민의 코딩일기] mysql로 Union 사용하기

이번 포스팅에서 다뤄볼 내용은 DB에서 쿼리 조합할때 자주 사용하는 Union에 대해서 다뤄보겠습니다. UNION Union이란 2개의 쿼리 결과를 행으로 합치는 것을 말합니다. 위의 그림처럼 2개의 조회 결과를 한개의 행으로 결과를 합치는 것을 말합니다. SELECT A 구문 UNION SELECT B 구문 Ex) select title, contents from noticeboard union select title, urlroot from myService; 쿼리대로 조회한 결과가 위의 그림입니다. UNION 조건 UNION을 사용할 때 조건이 존재하는데 조회하는 문장의 열의 개수와 데이터의 형식이 같아야 조회가 가능합니다. UNION ALL UNION과 UNION ALL의 차이는 중복값의 차이이다..

DB/SQL 2021.12.21

[세무민의 코딩일기] mysql에서 피벗 구현하기!

오늘 포스팅은 pivot에 관련된 내용을 다뤄볼 생각입니다. pivot을 이용하는 건 예전에 오라클에서 달력 만들었던 포스팅에서도 다뤘습니다. https://sg-moomin.tistory.com/entry/Oracle-DB%EB%A1%9C-%EB%8B%AC%EB%A0%A5-%EB%A7%8C%EB%93%A4%EA%B8%B0 Oracle DB로 달력 만들기! 오늘 과장님께서 주신 과제가 있어서 과제를 푸는데 과제 내용은 쿼리로 달력을 만드는것! 그래서 내가 구현한 방법은 총 3가지였다! #1 Case 문을 이용하는 방법! select min(case when WEEKDAY = 1 then DDAY sg-moomin.tistory.com 해당 포스팅은 위에 링크를 따라가면 확인할 수 있습니다. 오라클에서는 ..

DB/SQL 2021.08.02

[세무민의 코딩일기] 쿼리에서 자주 사용하는 MOD, POW 등 숫자 함수에 대해서 알아보기

이번 포스팅에서는 쿼리 내장함수 중 숫자 함수에 관련하여 포스팅해보겠습니다. 1. ABS SELECT ABS(-100) AS '음수 값', ABS(-10.00) AS '소수 값' FROM DUAL; - ABS란 숫자의 절댓값을 계산해주는 함수입니다. 2. CEILING, FLOOR, ROUND SELECT CEILING(3.3) AS '올림', FLOOR(3.3) AS '내림', ROUND(3.3) AS '반올림' FROM DUAL; - CEILING은 숫자를 올림하고 FLOOR는 숫자를 내림, ROUND는 숫자를 반올림하는 함수입니다. 3. CONV SELECT CONV('AE', 16, 8) FROM DUAL; - CONV는 진수 변환을 할 떄 사용하는 함수입니다. - CONV의 경우 원래 진수에서 ..

DB/SQL 2021.07.29

[세무민의 코딩일기] 새로 만들 테이블에 기존 테이블의 값을 insert 하는 Tip

이번 포스팅에서는 auto_increment와 insert에 대해서 간략하게 다뤄볼 계획입니다. 사실 auto_increment라는건 대부분 알 것입니다. 테이블을 생성 시 정수 primary key값을 가지는 컬럼에 되어있는 경우가 많기 때문이죠 auto_increment란 자동으로 1씩 증가하는 값을 입력해줍니다. 그렇지만 auto_increment를 자유롭게 변경할 수 있는데 아래의 코드와 같이하면 됩니다. # 테스트 테이블 생성 CREATE TABLE TEMP1( KEYNUMBERING INT AUTO_INCREMENT PRIMARY KEY, NUMBER1 INT, NUMBER2 INT, VARCHARS VARCHAR(30) ); # auto_increment값을 2로 변경 SET @@auto_i..

DB/SQL 2021.07.25

세무민의 코딩일기 : DB 함수 공부하기

DB에서 쿼리를 많이 작성해 본 경험이 없었다. 그렇지만 회사에서 인턴을 하면서 엄청 느끼고 있는게 쿼리를 잘 만드는 것이 데이터의 속도를 빠르게 해줄 수 있다. 내가 속한 부서가 대체적으로 운영 및 유지보수다보니 새로운 신기술은 배우기 어렵지만 DB 쿼리에 대해서 엄청 많이 볼 수 있어서 나름 배울점도 많고 부족한 점도 많다는 걸 느낀다. 최근에 업무 중에 함수를 제작하고 다양한 쿼리들을 만들면서 집에서 공부 해야겠다는 마음은 먹었으나.... 실상 회사 끝나고 집에 오면 아무것도 하기 싫어져서.... 그냥 조금씩 틈틈히 해볼 생각이다. 오늘은 기본적인 함수를 제작했다. 기존에 만들었던 테이블을 기반으로 만들었는데 항공 테이블을 가지고 진행할 예정이다. 항공 테이블은 항공사이름, 나라, 사이트, 전화번호..

DB/SQL 2021.04.18