목록SQL (16)
개발은 처음이라 개발새발
-- ROW_NUMBER() : 중복 없는 순위 (고유) -- RANK() : 동점일 때 중복 순위(공동 등수) -- + 공동 순위자가 있을 때 그 수만큼 -- 건너뛰고 다음 등수를 매김 -- DENSE_RANK() : 동점일 때 중복 순위(공동 등수) --+ 순위를 연속으로 매김 SQL상에서 순위를 매기는 방법은 ROW_NUMBER() / RANK() / DENSE_RANK() 세가지가 있다. 이 함수들을 사용할 때 함께 붙어오는 것이 있는데 OVER()이다. OVER() 안에는 ORDER BY를 통해 조회시 표출 되는 조건을 붙일 수 있고 PARTITION BY를 통해 순위를 구분하는 또 하나의 조건을 설정할 수 있다. WITH TB AS ( SELECT 'A' AS NAME, 'class1' AS ..
SELECT * REPLACE('대체할 값'AS'컬럼명') SQL에서도 불러올 값을 간단하게 혹은 금액 같은 경우 원화에 맞게 환산해 대체할 수 있는 함수가 있습니다. REPLACE()함수를 활용하면 됩니다. 예제는 아래와 같습니다. -- REPLACE()함수 예제 SELECT * REPLACE(price * 10000 AS price) FROM `olist.olist_order_items`
SELECT * EXCEPT('제외할 컬럼') SQL에서 필요 없는 컬럼을 빼고 불러오고 싶은 경우, 간단한 방법은 필요한 컬럼을 모두 적는 것이지만 필요한 컬럼이 굉장히 많고 필요 없는 컬럼이 적을 경우 EXCEPT 함수를 사용하는 게 현명하다. --EXCEPT() 함수 예제 SELECT * EXCEPT(shipping_limit_date, freight_value) FROM `olist.olist_order_items`
DATE_TRUNC('날짜', '남기는 부분') DATETIME_TRUNC( '날짜', '남기는 부분') TIMESTAMP_TRUNC( '날짜', '남기는 부분') ※ 추출할 부분 ※ YEAR : 연도 (결과: 해당 연도의 첫날) MONTH : 월 (결과: 해당 월의 첫날) DAY : 일 (결과: 해당 날짜의 0시 0분) WEEK : 주(기본 일요일 시작) (결과: 해당 주차의 첫 날(일)) WEEK(MONDAY) : 주(월요일 시작) (결과: 해당 주차의 첫 날(월)) QUARTER : 분기 (결과: 해당 분기의 첫 날) HOUR : 시 MINUTE : 분 SECOND : 초 -- 원하는 정보까지만 추출하는 DATE/DATETIME/TIMESTAMP_TRUNC SELECT order_purchase_t..
** EXTRACT('추출할 부분' FROM '날짜 컬럼') 날짜에서 일부분만 추출하고 싶을 때 SQL에서는 EXTRACT 함수를 사용한다. ※ 추출할 부분 ※ YEAR : 연도 MONTH : 월 DAY : 일 DAYOFWEEK : 요일(0: 월요일 ~ 6: 토요일) WEEK : 주(기본 일요일 시작) WEEK(MONDAY) : 주(월요일 시작) QUARTER : 분기 HOUR : 시 MINUTE : 분 SECOND : 초 -- 필요한 값만 추출하는 EXTRACT SELECT order_purchase_timestamp, EXTRACT(YEAR FROM order_purchase_timestamp) AS YEAR, EXTRACT(QUARTER FROM order_purchase_timestamp) AS ..
https://www.hackerrank.com/challenges/challenges/problem?h_r=internal-search Challenges | HackerRank Print the total number of challenges created by hackers. www.hackerrank.com 이번 문제는 손이 많이 가는 서브쿼리 퀴즈인데요. 우선 예제를 살펴보겠습니다. 네 문제는 Hackers와 Challenges라는 두 테이블을 가지고 문제를 푸는 것입니다. 이 문제가 어려운 이유는 조건인데요. 조건을 간단하게 요약하면 다음과 같습니다. ###조건 조건1. hacker_id 별 name과 challenges의 개수를 구해라 조건2. hacker_id 별 최대 challenges를..
https://leetcode.com/problems/department-highest-salary/ Department Highest Salary - LeetCode Can you solve this real interview question? Department Highest Salary - Table: Employee +--------------+---------+ | Column Name | Type | +--------------+---------+ | id | int | | name | varchar | | salary | int | | departmentId | int | +--------------+--- leetcode.com Input: Employee table: +----+-----..
https://www.hackerrank.com/challenges/earnings-of-employees/problem?h_r=internal-search Top Earners | HackerRank Find the maximum amount of money earned by any employee, as well as the number of top earners (people who have earned this amount). www.hackerrank.com 이번에는 해커랭크의 서브쿼리 퀴즈를 풀어보겠습니다. 문제는 employee라는 테이블이 있고 그안에 아이디와, 이름, 개월수, salary의 컬럼으로 형성돼 있는데요. 문제는 개월수(months)와 salary를 곱한 값이 최대 몇이고 이 ..
https://leetcode.com/problems/swap-salary/ Swap Salary - LeetCode Can you solve this real interview question? Swap Salary - Table: Salary +-------------+----------+ | Column Name | Type | +-------------+----------+ | id | int | | name | varchar | | sex | ENUM | | salary | int | +-------------+----------+ id is the primar leetcode.com 이번 시간에는 DML 명령어 중 UPDATE를 활용한 퀴즈를 풀어보려고합니다. 문제를 보겠습니다. Input: ..
이번에도 CASE문 퀴즈를 풀어보려고 합니다. 이번에는 해커랭크가 아니라 리트코드의 퀴즈를 풀어볼 겁니다. https://leetcode.com/problems/reformat-department-table/ Reformat Department Table - LeetCode Can you solve this real interview question? Reformat Department Table - Table: Department +-------------+---------+ | Column Name | Type | +-------------+---------+ | id | int | | revenue | int | | month | varchar | +-------------+---------+ (i..