본문 바로가기

SQL/SQL test26

[Programmers] 상품을 구매한 회원 비율 구하기 문제 2021년에 가입한 전체 회원들 중 상품을 구매한 회원수와 상품을 구매한 회원의 비율 👉 (=2021년에 가입한 회원 중 상품을 구매한 회원수 / 2021년에 가입한 전체 회원 수)을 년, 월 별로 출력하는 SQL문을 작성 - 상품을 구매한 회원의 비율은 소수점 두번째자리에서 반올림하고, - 전체 결과는 년을 기준으로 오름차순 정렬해주시고 년이 같다면 월을 기준으로 오름차순 정렬할 것! https://school.programmers.co.kr/learn/courses/30/lessons/131534 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀.. 2024. 4. 9.
[Programmers] 특정 기간동안 대여 가능한 자동차 대여 비용(풀이) 문제 https://school.programmers.co.kr/learn/courses/30/lessons/157339 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 📍 조건 - 자동차 종류가 '세단' 또는 'SUV'인 자동차 중 - 2022년 11월 1일부터 2022년 11월 30일까지 대여 가능하고 - 30일간의 대여 금액이 50만 원 이상 200만 원 미만인 자동차에 대해서 - 자동차 ID, 자동차 종류, 대여 금액(칼럼명: FEE) 리스트 출력 - 대여 금액 내림차순, 자동차 종류 오름차순 정렬, 자동차 ID를 기준으로 내림차순 📍 1차 조.. 2024. 4. 9.
[HackerRank] Interviews (Advanced Join) 풀이 Advanced Join / Hard 문제 ✨ 문제 링크 : https://www.hackerrank.com/challenges/interviews/problem?isFullScreen=true contest_id, hacker_id, name 별로 다음 컬럼의 합계를 구해야한다. sums of total_submissions & total_accepted_submissions & total_views & total_unique_views for each contest 👉 주어진 컬럼 자체를 JOIN 하지 않고, 서브쿼리로 합계 컬럼을 각각 가공한 후 해당 테이블을 JOIN 하는 방법을 사용하여 해결한다. 풀이 1. contest_id, hacker_id, name 컬럼이 들어있는 Contest 테이블을.. 2024. 1. 17.
[HackerRank] Occupations (Pivot) Advanced Select / Medium Level 문제 ✨ 문제링크 : https://www.hackerrank.com/challenges/occupations/problem?isFullScreen=true 다음과 같은 테이블을 피봇 하여, Doctor, Professor, Singer, and Actor 컬럼 순으로 해당 직업에 해당하는 사람 이름이 알파벳 순으로 정렬되게 만들어야 한다. 풀이 1. 테이블 확인 먼저 테이블은 위 예시와 동일하게 이름/직업 순으로 되어 있다. SELECT * FROM OCCUPATIONS 2. 직업별로 이름을 알파벳 순으로 정렬하고 번호 매기기 문제 조건 중 직업별로 피봇 하되, 알파벳 순으로 이름을 정렬하는 점이 있다. 그리고 피봇 결과는 1, 2, 3행 별로 위.. 2024. 1. 17.
[HackerRank] SQL Project Planning Advanced Join / Intermediate 문제 👉 문제 링크 : https://www.hackerrank.com/challenges/sql-projects/problem?isFullScreen=true 다음과 같은 테이블에서 end_date와 start_date가 연속적으로 이어지면 하나의 프로젝트로 간주한다. Start_Date 고윳값은 Start_date가 End_Date와 일치하지 않는 것이며, End_Date 고윳값 역시, Start_date와 일치하지 않으면 하나의 프로젝트의 시작일과 종료일이 된다. 이 포인트로 문제를 풀면 아래와 같다 풀이 FROM 절에 두 개의 서브쿼리를 넣는다. 각각 프로젝트별 고유한 시작일과 종료일을 추출하는 것이다. WHERE 절에 시작일이 종료일에 포함되지.. 2024. 1. 17.
[HackerRank] Contest Leaderboard Basic Join / Intermediate 문제 hacker_id, name, 총 점수를 쿼리 총 점수는 challenge_id 별로 가장 높은 값을 합산 한 것(해커별로) 총 점수 기준으로 내림차순 후, 동일한 점수라면 hacker_id 기준으로 정렬 단, 총 점수가 0인 해커는 제외 풀이 FROM 절에 서브쿼리 : 먼저 hacker_id, challenge_id 별로 가장 높은 점수를 얻어내고 그 값을 합산해야한다. Submission 테이블만 사용하며, hacker_id, challenge_id 기준으로 Groupby MAX(score) 값 도출 위의 서브쿼리와 Hackers 테이블을 JOIN SELECT 절에 도출이 필요한 컬럼 hacker_id, name, SUM(max_score)를 나열 .. 2024. 1. 16.
[HackerRank] Challenges Basic Join / Intermediate 문제 hacker_id, name, 도전과제 총 수 출력 결과는 도전과제 총 수(내림차순), 도전과제 총 수가 동일하면 hacker_id로 추가 정렬 단, 도전과제 수가 동일하고, 그 수가 최대 도전과제 수보다 작은 경우 해당 학생은 결과에서 제외 풀이 이 문제의 핵심은 세 번째 조건이며 FROM 절에 서브쿼리를 사용하여 해결한다. 먼저 해커아이디/이름 기준으로 groupby 하여 challenge_id를 count()하여 totalcount를 구한다 다음으로 세번째 조건을 필터링 하기 위해 총 도전과제 수의 중복 수와 전체 도전과제 수 중 최댓값을 구해야한다 도전과제 중복수 : COUNT(challenge_id) 별로 몇 번이나 값이 나왔는지(중복되었는지).. 2024. 1. 16.
[HackerRank] The Report (INNER JOIN - BETWEEN) 문제 다음과 같이 Students, Grades 두 테이블이 주어졌다. 문제는 다음과 같은 순으로 해결한다. 1. 세 개의 열 : 이름, 학년 및 점수 2. 학점이 8 미만인 학생들의 이름은 제외 >> NULL 3. 학점을 내림차순으로 정렬 (높은 학점이 먼저 표시됨) 4. 학점이 8에서 10 사이인 학생들이 여러 명인 경우, 이름을 알파벳 순으로 정렬 - 5. 학점이 8 미만인 학생들의 경우, 이름을 "NULL"로 표시하고 학점을 내림차순으로 정렬 6. 학점이 1에서 7 사이인 학생들이 여러 명인 경우, 점수를 오름차순으로 정렬 풀이 ▶︎ 이 문제의 핵심은 두 테이블을 join 할 때 inner join + between을 사용해서 mark의 최대 최솟값과 grade를 매치시키는 것이다. ▶︎ Case.. 2024. 1. 15.
[HackerRank] Weather Observation Station 5(UNION) 문제 ▶︎ 도시명이 가장 긴 것과, 짧은 것을 하나씩 도출(알파벳 순으로 정렬하여 가장 처음 값만 반환) 풀이 ▶︎ UNION을 사용하여 가장 긴 값과 짧은 값을 각각 구한다. ▶︎ 문자열의 길이는 LENGTH()함수를 사용한다. (SELECT CITY, LENGTH(CITY) FROM STATION ORDER BY 2 ASC, 1 ASC LIMIT 1) UNION (SELECT CITY, LENGTH(CITY) FROM STATION ORDER BY 2 DESC, 1 ASC LIMIT 1) 2024. 1. 15.
728x90