반응형

서브쿼리 10

MySQL Correlated Subquery 상관 서브쿼리 개념 정리 및 활용(이동 평균,누적 합 계산)

MySQL Correlated Subquery 상관 서브쿼리 상관 서브쿼리는 영어 이름 그대로, 쿼리들이 서로 연관성이 있다는 의미이다. 내부 서브쿼리에서 외부 쿼리(Outer Query)의 컬럼을 참조하는 등, 내부 서브쿼리와 외부 쿼리 간 연관성이 있는 경우다. "연관성이 있다"는 "의존성이 있다"라는 말인데, 상관 서브쿼리는 내부 서브쿼리가 외부 쿼리와 무관하게 독립적으로 실행할 수 없다는 의미이다. 왜냐하면 외부 쿼리 선 실행 후, 외부 쿼리(메인 쿼리)의 행마다 상관 서브쿼리를 반복 실행하기 때문이다. 이는 같은 테이블처럼 보이나, 별칭(Alias)을 다르게 붙이고 서로 다른 테이블로 여기며 자신을 참조하는 셀프 조인과 SELECT, WHERE절 서브쿼리에서 보인다. 아래는 WHERE절 상관 서..

SQL/MySQL 2024.03.11

MySQL 프로그래머스 서울에 위치한 식당 목록 출력하기 문제 답

이 글은 프로그래머스 SQL 고득점 Kit 문제와 답을 정리한 글입니다. *MySQL 버전입니다. 프로그래머스 서울에 위치한 식당 목록 출력하기 문제 💡식당 id, 식당 이름, 음식 종류, 즐겨찾기 수, 주소, 리뷰 평균 점수 가져오기 리뷰 평균 점수: 소수 세 번째 자리에서 반올림 리뷰 평균 점수 내림차순, 즐겨찾기 수 내림차순 정렬 프로그래머스 서울에 위치한 식당 목록 출력하기 답 💡 본 문제의 포인트: 두 테이블 조인, select 활용 select a.rest_id as REST_ID , REST_NAME , FOOD_TYPE , FAVORITES , ADDRESS , b.avg_s as SCORE from rest_info as a , (select rest_id , round(avg(revie..

HackerRank(해커랭크) MySQL Contest Leaderboard 문제 답

*MySQL 버전, Basic Join 문제입니다. 해커랭크 Contest Leaderboard 문제, 설명 💡hacker_id, name, total score 가져오기 total score = 모든 챌린지들 점수 중 최고점 총합 total score 내림차순, hacker_id 오름차순 정렬 total score = 0은 제외 해커랭크 Contest Leaderboard 답 💡서브쿼리 JOIN 조건을 건 테이블도 JOIN 가능하다. SELECT hacker_id , name , SUM(b.s_max) AS s_total FROM hackers JOIN ( SELECT hacker_id , challenge_id , MAX(score) AS s_max FROM submissions GROUP BY 1,..

HackerRank(해커랭크) MySQL New Companies 문제 답

*MySQL 버전, advanced select 문제입니다. 해커랭크 New Companies 문제, 샘플, 설명 💡 회사코드, 창립자명, 리드 매니저 총 인원, 시니어 매니저 총 인원, 매니저 총 인원, 총 직원(employee) 수 구하기 리드 매니저 = LM, 시니어 매니저 = SM, 매니저 = M, 직원 E 💡 회사코드 오름차순 정렬 💡 유의점 중복 레코드 존재 가능 회사코드 컬럼은 string 타입(문자형). 즉, 숫자로 분류 불가하므로 정렬 시 유의 테이블은 총 5개이다. Company, Lead_Manager, Senior_Manager, Manager, Employee 모든 테이블의 컬럼은 String 타입 company_code가 공통키인 듯하다. 해커랭크 New Companies 답 스..

HackerRank(해커랭크) MySQL Occupations 문제 답

*MySQL 버전, advanced select 문제입니다. 해커랭크 Occupations 문제, 샘플, 설명 직업별(D, P, S, A) 컬럼 분류 직업별 컬럼에 해당되는 사람 이름 알파벳 순 정렬 컬럼에 더 이상 사람 이름이 없다면 NULL 처리 대충 첫 번째 컬럼은 의사들, 두 번째 컬럼은 교수들, 세 번째 컬럼은 가수들, 네 번째 컬럼은 배우들 이름이어야 하고 빈 셀은 NULL 처리하라는 말. 해커랭크 Occupations 답 WITH 가독성을 위해 사용 CASE WHEN 직업별로 이름을 가져오고자 사용(WHERE occupation = 'doctor'처럼 쓴 것임) ROW_NUMBER, PARTITION BY NULL처리 때문에 엄청 까다롭다고 생각한 문제다. 그저 단순하게 CASE WHEN이나..

HackerRank(해커랭크) MySQL Top Earners 문제 답

*MySQL 버전, 집계 함수(Aggregation) 문제입니다. 해커랭크 Top Earners 문제, 샘플, 설명 문제 의도: aggregation 사용 직원들의 총수입(salary*months) 구하기 최고 총 수입액 구하기 최고 총 수입액 직원 수 구하기 결과값 사이에 공백 두기 대충 샘플에서는 최고 수입액이 69952인데 카운트해보니 킴벌리 혼자라는 말. 해커랭크 Top Earners 답 GROUP BY 1: 총 수입액 기준, 직원 수 카운트 해야하기 위함 내림차순 정렬 및 LIMIT 1: 최고 총 수입액 구하기 위함 결과값들 사이에 공백 두는 것 때문에 CONCAT 사용하려 했으나, 아래 쿼리로도 결과가 같아서 정답. # total earnings: monthly salary*months SEL..

HackerRank(해커랭크) MySQL Weather Observation Station 15 문제 답

*MySQL 버전, 집계 함수(Aggregation) 문제입니다. 해커랭크 Weather Observation Station 15 문제, 샘플, 설명 Western Longtitude(LONG_W) 구하기 이때 구해야 하는 LONG_W는 137.2345보다 작은 Northern Latitude(LAT_N) 값들 중 최댓값. =LONG_W for the largest LAT_N in STATION that is less than 137.2345. 소수 4자리까지 구하기 =Round ~ to 4 decimal places. 해커랭크 Weather Observation Station 15 답 WHERE절 서브 쿼리(중첩 서브쿼리), 비교 연산자 사용 MAX 사용: 137.2345보다 작은 값 중 최댓값 구하기..

HackerRank(해커랭크) MySQL Binary Tree Nodes 문제 답

*MySQL 버전, advanced select 문제입니다. 해커랭크 Binary Tree Nodes 문제, 샘플, 설명 💡 노드 타입 세 가지로 분류하기 Root: 루트 노드, 최상위 노드 Leaf: 리프 노드, 자식이 없는 단말 노드 Inner: 루트, 리프 둘 다 아닌 노드 *노드 관련 글 참조 트리(그래프) - 나무위키 트리를 정의할 때에는 다양한 정의가 쓰이고, 다음은 모두 동치이다. GGG는 회로가 없는 연결 그래프이다.GGG는 회로가 없고, 단순 그래프의 형태를 유지하면서 간선을 추가할 경우 회로가 생긴다 namu.wiki 💡 1 Inner처럼 num node_type 포맷의 결과물 💡 N 오름차 순 정렬 해커랭크 Binary Tree Nodes 답 N에 있는 값이 P에도 있다면 Inner라..

MySQL SELECT절 서브 쿼리(스칼라 서브 쿼리) 기초 정리

MySQL SELECT절 서브 쿼리 SELECT절 서브 쿼리는 스칼라 서브 쿼리로 불리기도 합니다. 이는 하나의 결과값만 처리하기에, 여럿 값을 명령하면 에러납니다. 다시 말해, 스칼라 서브 쿼리는 1행 1열만 반환합니다. MySQL 서브쿼리 사용법(문법) 메인 쿼리 SELECT절에 (서브쿼리)를 입력하는 것이 스칼라 서브 쿼리입니다. SELECT 컬럼1, 컬럼2,... 컬럼N , ( SELECT 컬럼명 FROM 테이블명 WHERE 조건식 ) FROM 테이블명 WHERE 조건식; MySQL SELECT절 서브 쿼리 예제 2개의 샘플 테이블입니다. champ_info: 게임 LOL 챔피언 정보를 담은 테이블(좌) counter_info: 해당 챔피언이 카운터인 정보를 담은 테이블(우) SELECT numb..

SQL/MySQL 2023.09.28

MySQL 서브 쿼리Subquery 기초 정리

MySQL 서브 쿼리 개념, 사용 이유 'SELECT 어쩌고 FROM 어쩌고;' 같은 명령문을 우리는 쿼리라고 부르기로 했어요. 그리고 쿼리 안에 쿼리를 또 입력할 수 있는데, 쿼리 속 쿼리를 서브 쿼리라고 합니다. 서브쿼리 사용의 주이유는 하나의 쿼리 속에 여러 SELECT절을 때려 박으면 한 번에 처리할 수 있기 때문입니다. 보통 서브쿼리는 메인 쿼리보다 먼저 실행되지만 예외도 있습니다. MySQL 서브 쿼리 사용법(문법) 서브쿼리는 마치 양파 껍질과 비슷합니다. 양파의 가장 겉껍질은 속에 수많은 껍질들을 감싸고 있습니다. 이때 가장 겉껍질과 같은 쿼리는 메인쿼리, Outer query이며 그리고 겉껍질 속에 있는 속껍질들은 서브쿼리, Subquery라고 합니다. 서브 쿼리의 문법 순서는 메인 쿼리와..

SQL/MySQL 2023.09.22
반응형
top