목록SQL (30)
오랑우탄의 반란
오늘도 오랑이는 문제를 풉니다. Symmetric PairsYou are given a table, Functions, containing two columns: X and Y.Two pairs (X1, Y1) and (X2, Y2) are said to be symmetric pairs if X1 = Y2 and X2 = Y1.Write a query to output all such symmetric pairs in ascending order by the value of X. List the rows such that X1 ≤ Y1. Sample InputSample Output20 2020 2122 23 풀이과정x1 = y2 & x2 = y1 인 행이 2개 이상인 경우x 첫번째 풀이는 셀프조인..
오늘도 오랑이는 문제를 풉니다. SQL Project PlanningYou are given a table, Projects, containing three columns: Task_ID, Start_Date and End_Date. It is guaranteed that the difference between the End_Date and the Start_Date is equal to 1 day for each row in the table.If the End_Date of the tasks are consecutive, then they are part of the same project. Samantha is interested in finding the total number of dif..
오랜만에 오랑이는 문제를 풉니다. Weather Observation Station 20A median is defined as a number separating the higher half of a data set from the lower half. Query the median of the Northern Latitudes (LAT_N) from STATION and round your answer to decimal places. Input Format The STATION table is described as follows where LAT_N is the northern latitude and LONG_W is the western longitude. 중앙값을 구하는 문제입니다.O..
오늘도 오랑이는 문제를 풉니다. 1484. Group Sold Products By The Date 풀이 과정 products 칼럼 출력 방법 외에는 쉬운 문제입니다. 우선 아래와 같이 코드를 작성해줍니다. SELECT SELL_DATE, COUNT(DISTINCT PRODUCT) AS NUM_SOLDFROM ACTIVITIESGROUP BY 1ORDER BY 1; 이제 products 칼럼을 추가해야 하는데, product 의 각 행을 sell_date 기준으로 묶어서 쉼표(,)로 구분지어 오름차순으로 한 줄에 나열되게 출력해야 하는데요, CONCAT 을 바로 떠올리겠지만 그룹화가 어려워 보입니다. 이때 사용할 수 있는 함수가 바로 GROUP_CONCAT 입니다. GROUP_CONCATGROUP ..
오늘도 오랑이는 문제를 풉니다. 185. Department Top Three Salaries 풀이 과정각 부서별로 월급 순위 매기기 dense_rank순위가 3 이하인 사람 select윈도우 함수로 순위 추출하는 방법을 알면 간단한 문제입니다.추출할 칼럼과 부서별 월급이 큰 순으로 정렬해 순위를 추출해주는 칼럼을 select 합니다. select d.name as Department, e.name Employee, Salary, dense_rank() over (partition by d.name order by salary desc) as rnfrom employee e join department d on departmentId = d.id RANK vs DENSE_RANKRANK 함수를 사..
오늘도 오랑이는 문제를 풉니다. 602. Friend Requests II: Who Has the Most Friends 풀이 과정requester_id 와 accepter_id 칼럼에서 가장 자주 등장한 수 = idid 가 등장한 회수 카운트 = num친구추가는 한쪽이 하면 자동으로 다른쪽도 한거와 마찬가지기 때문에 requester_id 와 accepter_id 두 칼럼 모두에서 가장 많이 등장한 수를 찾아야 합니다. 즉 두 칼럼을 union해서 개수를 세어야 합니다.select requester_id as id from RequestAccepted union allselect accepter_id as id from RequestAccepted 여기에서 id별로 그룹하고 개수를 센 칼럼 num 기..
오늘은 MySQL 의 기본 자료형에 대해 알아보겠습니다. 숫자 자료형 정수형정수형 자료형은 기본적으로 SIGNED(기본, 양수/음수)과 UNSIGNED(양수) 옵션을 가짐 정수형 자료형은 AUTO_INCREMENT 제약조건을 이용해 ID 를 생성하는 데 유용함자료형범위저장크기특징TINYINTSigned: -128 ~ 127 Unsigned: 0 ~ 2551 byte매우 작은 정수값 저장, 메모리 사용 최소화SMALLINTSigned: -32,768 ~ 32,767 Unsigned: 0 ~ 65,5352 bytes 작은 정수값MEDIUMINTSigned: - 800만 ~ 800만 Unsigned: 0 ~ 1600만3 bytes 중간 크기 정수값INTSigned: 약 - 20억 ~ 20억* Unsign..
윈도우 함수 총정리 2 에서는 윈도우 프레임 내의 범위 지정을 다룰 예정입니다.윈도우 함수의 기본 개념, 집계 및 순위 매기기 활용은 윈도우 함수 총정리 1을 참고해주세요. 범위지정윈도우 프레임 내에서의 범위 지정 또한 중요한 부분입니다. 예를 들어 특정 기간에 대한 금액의 누적합을 구하고 싶은 경우 활용할 수 있겠지요? 기본 문법기본적인 윈도우 함수의 OVER 안에 ROWS/RANGE BETWEEN이 추가됩니다. SELECT 집계함수() OVER (PARTITION BY {컬럼명1}, ORDER BY {컬럼명2} ROWS|RANGE BETWEEN {시작} AND {끝}) FROM {테이블};ROW는 현재행 기준 전후 N개의 물리적인 행 단위의 프레임 지정RANGE는 논리적인 값을 범위로 지정, 숫자와 ..