반응형

🗓️ 문제 설명

  • Products 테이블의 product_id, new_price, change_date는 각각 상품ID, 새로운 가격, 가격 변동 일자를 나타냅니다.
  • product_id와 change_date는 해당 테이블의 기본키입니다.
Column name Type
product_id int
new_price int
change_date date

 

문제

  • 2019년 8월 16일에 모든 상품 가격을 찾는 SQL문을 작성해주세요.
  • 변경전 모든 상품의 가격은 10이라고 가정합니다.
  • 문제 예시
product_id new_price change_date
1 20 2019-08-14
2 50 2019-08-14
1 30 2019-08-15
1 35 2019-08-16
2 65 2019-08-17
3 20 2019-08-18
  • 출력 예시
product_id price
2 50
1 35
3 10

 

💻 코드

최종 코드

  • 실행 결과

 

코드 풀이

 

반응형

'코딩문제풀이 > SQL' 카테고리의 다른 글

[LeetCode] Article Views I (SQL)  (0) 2023.07.17
[LeetCode] Movie Rating (SQL)  (0) 2023.07.14
[LeetCode] User Activity for the Past 30 Days I (SQL)  (0) 2023.07.10
[LeetCode] Exchange Seats (SQL)  (0) 2023.07.06
[LeetCode] Tree Node (SQL)  (0) 2023.07.03
반응형

🗓️ 문제 설명

  • Views 테이블의 article_id, author_id, viewer_id, view_date는 각각 아티클ID, 작가ID, 독자ID, 읽은 날짜를 나타냅니다.
  • Views 테이블은 기본키가 없고, 중복된 값이 있을 수 있습니다.
Column name Type
article_id int
author_id int
viewer_id int
view_date date

 

문제

  • 자신이 쓴 아티클을 최소 한 번이상 읽은 작가의 ID를 조회하는 SQL문을 작성해주세요.
  • 결과는 id순으로 오름차순 정렬해주세요.
  • 문제 예시
article_id author_id viewer_id view_date
1 3 5 2019-08-01
1 3 6 2019-08-02
2 7 7 2019-08-01
2 7 6 2019-08-02
4 7 1 2019-07-22
3 4 4 2019-07-21
3 4 4 2019-07-21
  • 출력 예시
id
4
7

 

💻 코드

최종 코드

  • 실행 결과

 

코드 풀이

 

반응형
반응형

🗓️ 문제 설명

  • Movies 테이블의 movie_id, title은 각각 영화ID, 영화 제목을 나타냅니다.
  • movie_id는 해당 테이블의 기본키입니다.
Column Name Type
movie_id int
title varchar
  • Users 테이블의 user_id, name은 각각 유저ID, 유저이름을 나타냅니다.
  • user_id는 해당 테이블의 기본키입니다.
Column Name Type
user_id int
name varchar
  • MovieRating 테이블의 movie_id, user_id, rating, created_at는 각각 영화ID, 유저ID, 평점, 기록날짜를 나타냅니다.
  • movie_id와 user_id는 해당 테이블의 기본키입니다.
Column Name Type
movie_id int
user_id int
rating int
created_at date

 

문제

  • 가장 많은 영화에 리뷰를 작성한 유저 이름과 2020년 2월에 가장 높은 평균 평점을 갖는 영화 제목을 조회하는 SQL문을 작성해주세요.
  • 가장 많은 영화에 리뷰를 작성한 유저가 둘 이상인 경우, 사전순으로 정렬했을 때 위에 표시되는 유저 이름을 조회해주세요.
  • 가장 높은 평균 평점을 갖는 영화가 둘 이상인 경우, 사전순으로 정렬했을 때 위에 표시되는 영화 제목을 조회해주세요.
  • 문제 예시

Movies

movie_id title
1 Avengers
2 Frozen 2
3 Joker

Users

user_id name
1 Daniel
2 Monica
3 Maria
4 James

MovieRating

movie_id user_id rating created_at
1 1 3 2020-01-12
1 2 4 2020-02-11
1 3 2 2020-02-12
1 4 1 2020-01-01
2 1 5 2020-02-17
2 2 2 2020-02-01
2 3 2 2020-03-01
3 1 3 2020-02-22
3 2 4 2020-02-25
  • 출력 예시
results
Daniel
Frozen 2

 

💻 코드

최종 코드

  • 실행 결과

 

코드 풀이

 

반응형
반응형

🗓️ 문제 설명

  • 초 단위로 기록된 주식가격이 담긴 배열 prices가 매개변수로 주어질 때, 가격이 떨어지지 않은 기간은 몇 초인지를 반환해주세요.
  • 제한 사항
    • prices의 각 가격은 1 이상 10,000 이하인 자연수
    • prices의 길이는 2 이상 100,000 이하
  • 입출력 예시
prices return
[1, 2, 3, 2, 3] [4, 3, 1, 1, 0]

 

💻 코드

최종 코드

 

코드 풀이

 

반응형
반응형

🗓️ 문제 설명

  • Activity 테이블의 user_id, session_id, activity_date, activity_type은 각각 유저ID, 세션ID, 활동일자, 활동종류를 나타냅니다.
  • Activity에는 기본키가 없으며 중복값이 있을 수 있습니다.
  • 활동종류(activity_type)에는 open_session(세션 시작), end_session(세션 끝), scroll_down(스크롤내림), send_message(메시지 발송)이 있습니다.
  • 해당 테이블은 소셜 미디어 웹사이트에 대한 사용자 활동을 보여줍니다.
  • 각 세션은 정확히 한 명의 사용자에게 속합니다. 
Column name Type
user_id int
session_id int
activity_date date
activity_type enum

 

문제

  • 2019년 7월 27일을 포함한 날까지 30일 동안 일일 활성 사용자 수를 찾는 SQL 쿼리를 작성해주세요.
  • 해당 날짜에 활동을 한 번 이상 수행한 사용자는 언젠가는 활동한 것입니다.
  • 문제 예시
user_id session_id activity_date activity_type
1 1 2019-07-20 open_session
1 1 2019-07-20 scroll_down
1 1 2019-07-20 end_session
2 4 2019-07-20 open_session
2 4 2019-07-21 send_message
2 4 2019-07-21 end_session
3 2 2019-07-21 open_session
3 2 2019-07-21 send_message
3 2 2019-07-21 end_session
4 3 2019-06-25 open_session
4 3 2019-06-25 end_session
  • 출력 예시
day active_users
2019-07-20 2
2019-07-21 2

 

💻 코드

최종 코드

  • 실행 결과

 

코드 풀이

 

반응형

'코딩문제풀이 > SQL' 카테고리의 다른 글

[LeetCode] Article Views I (SQL)  (0) 2023.07.17
[LeetCode] Movie Rating (SQL)  (0) 2023.07.14
[LeetCode] Exchange Seats (SQL)  (0) 2023.07.06
[LeetCode] Tree Node (SQL)  (0) 2023.07.03
[LeetCode] Market Analysis I (SQL)  (0) 2023.06.29
반응형

Introduction

  • 모바일에서 KPI를 확인할 수 있는 대시보드를 제작합니다.
  • Workout Wednesday 2023 Week 24(Link)

 

Requirements

  • 대시보드 크기 : 320 * 640 px
  • 판매, 이익, 주문에 대한 KPI 카드 및 스파크 라인 생성
  • 카테고리 및 세그먼트별 판매에 대한 라인 차트 및 BAN 생성
  • 주별 판매를 보여주는 막대 차트 만들기

 

Result

 

Dataset

  • 데이터셋 : 슈퍼스토어 데이터(링크)

 

Process

더보기

1. state별 매출을 보여주는 시트를 생성합니다.

2. 세그먼트별 매출을 보여주는 시트를 생성하고, 세그먼트와 총 매출을 가운데 정렬해줍니다.

3. 세그먼트별 월별 매출 추이를 보여주는 그래프 시트를 생성합니다. 그리고 각 세그먼트별 최대 매출과 최소 매출을 표시해줍니다.

4. 세그먼트별 매출 시트처럼 카테고리별 매출을 보여주는 텍스트 시트와 그래프 시트를 생성해줍니다.

5. 월별 매출, 수익을 보여주는 그래프 시트를 생성합니다.

6. 주문 건수를 계산하는 필드를 생성 후 월별 시트를 보여주는 시트를 생성합니다.

7. 총 매출, 총 수익, 총 주문 건수를 보여주는 시트를 생성합니다. 이때, 간트 차트를 사용하여 축 범위를 0 ~ 1로 고정합니다.

8. 메뉴바를 만들기 위해 값이 4개인 테이블 [Ship Mode]를 사용합니다. 

9. 각 값을 'Home', 'Category', 'Segment', 'State'로 변환하는 필드를 생성합니다.

10. 생성한 필드를 열로 갖는 시트를 생성한 뒤, 수동 정렬을 통해 'Home' - 'Category' - 'Segment' - 'State' 순으로 정렬해줍니다.

11. 'Home', 'Category', 'Segment', 'State'를 값으로 갖는 매개변수를 생성합니다.

12. 9번에서 생성한 매개변수와 11번에서 생성한 필드가 같은지 확인하는 필드를 생성하여 매뉴바의 색상으로 설정합니다.

13. 각 메뉴의 모양을 다르게 설정해줍니다.

14. 매개변수와 각 메뉴가 같은지 확인하는 필드를 생성합니다.

15. 클릭을 통해 메뉴가 변경되는 동작을 생성합니다.

16. 하단에 메뉴바(navi 시트)를 가져다두고, 위에 State 시트를 가져다둡니다.

17. State 시트가 메뉴바의 state가 클릭되었을 때만 나타나도록 ["값을 사용하여 표시 유형 제어" - "state navi(필드)"]를 설정해줍니다.

18. 17번의 State 시트가 있는 곳에 Segment의 매출과 연관된 시트를 가져다둡니다. 그리고 해당 시트가 Segment 메뉴를 눌었을 때, 작동되도록 설정합니다.

19. Category와 Home 메뉴도 Segment와 State 메뉴와 같은 방식으로 대시보드를 설정합니다.

20. 서식을 변경하여 대시보드를 마무리해줍니다.

 

반응형
반응형

🗓️ 문제 설명

  • 코니는 매일 다른 옷을 조합하여 입는 것을 좋아합니다.
  • 코니는 각 종류별로 최대 1가지 의상만 착용할 수 있습니다.
  • 착용한 의상의 일부가 겹치더라도, 다른 의상이 겹치지 않거나, 혹은 의상을 추가로 더 착용한 경우에는 서로 다른 방법으로 옷을 착용한 것으로 계산합니다.
  • 코니는 하루에 최소 한 개의 의상은 입습니다.
  • 코니가 가진 의상들이 담긴 2차원 배열 clothes가 주어질 때 서로 다른 옷의 조합의 수를 반환해주세요.
  • 제한 사항
    • clothes의 각 행은 [의상의 이름, 의상의 종류]로 이루어짐
    • 코니가 가진 의상의 수는 1개 이상 30개 이하
    • 같은 이름을 가진 의상은 존재하지 않음
    • clothes의 모든 원소는 문자열로 이루어짐
    • 모든 문자열의 길이는 1 이상 20 이하인 자연수이고, 알파벳 소문자 또는 '_'로만 이루어짐
  • 입출력 예시
clothes return
[['yellow_hat', 'headgear'], ['blue_sunglasses', 'eyewear'], ['green_turban', 'headgear']] 5
[['crow_mask', 'face'], ['blue_sunglasses', 'face'], ['smoky_makeup', 'face']] 3

 

💻 코드

최종 코드

 

코드 풀이

 

다른 사람 풀이

더보기

풀이 1번

  1. 4번줄 : Counter 함수를 통해 의상의 종류 내에 의상이 몇개가 있는지 계산하여 cnt에 저장
  2. 5번줄 : reduce를 통해 cnt의 value를 모두 곱해준 후 -1을 함
    1. lambda x, y : x*(y+1) = reduce에 적용할 함수로 기존 값에 (새로운 값 + 1)을 곱해주는 함수 
    2. reduce(lambda x, y : x*(y+1), cnt.values(), 1) = 1부터 시작해서 cnt의 values를 불러오면서 lambda 함수를 적용
      • 예시)
        cnt = {'a' : 2, 'b' : 3} 인 경우, 위 reduce를 사용하면
        첫 번째 연산 : 1 * (2 + 1) = 3
        두 번째 연산 : 3 * (3 + 1) = 12

 

반응형
반응형

🗓️ 문제 설명

  • Seat 테이블의 id, student는 각각 좌석 ID, 학생 이름을 나타냅니다.
  • id는 기본키이며 연속적으로 증가합니다.
Column name  Type
id int
student varchar

 

문제

  • 모든 연속된 두 학생의 좌석 ID를 변경해주세요.
  • 만약 좌석 숫자가 홀수라면 마지막 학생은 좌석을 변경하지 않습니다.
  • 문제 예시
id student
1 Abbot
2 Doris
3 Emerson
4 Green
5 Jeames
  • 출력 예시
id student
1 Doris
2 Abbot
3 Green
4 Emerson
5 Jeames

 

💻 코드

최종 코드

  • 실행 결과

 

코드 풀이

 

반응형

'코딩문제풀이 > SQL' 카테고리의 다른 글

[LeetCode] Movie Rating (SQL)  (0) 2023.07.14
[LeetCode] User Activity for the Past 30 Days I (SQL)  (0) 2023.07.10
[LeetCode] Tree Node (SQL)  (0) 2023.07.03
[LeetCode] Market Analysis I (SQL)  (0) 2023.06.29
[HackerRank] The Report (SQL)  (0) 2023.06.26
반응형

🗓️ 문제 설명

  • 정수로 이루어진 배열 numbers가 있습니다.
  • 배열의 각 원소들에 대해 자신보다 뒤에 있는 숫자 중에서 자신보다 크면서 가장 가까이 있는 수를 뒷 큰수라고 합니다.
  • 정부 배열 numbers가 매개변수로 주어질 때, 모든 원소에 대한 뒷 큰수들을 차례로 담은 배열을 반환해주세요.
  • 단, 뒷 큰수가 존재하지 않는 원소는 -1을 담습니다.
  • 제한 사항
    • 4 ≤ numbers의 길이 ≤ 1,000,000
      • 1 ≤ numbers[i] ≤ 1,000,000
  • 입출력 예시
numbers result
[2, 3, 3, 5] [3, 5, 5, -1]
[9, 1, 5, 3, 6, 2] [-1, 5, 6, 6, -1, -1]

 

💻 코드

최종 코드

 

코드 풀이

 

⚙️ 시행착오

1차 시도

더보기
  • 테스트 결과 : 시간초과 

 

반응형
반응형

🗓️ 문제 설명

  • Tree 테이블의 id, p_id는 각각 노드의 ID, 부모 노드의 ID를 나타냅니다.
  • id는 테이블의 기본키입니다.
  • 주어진 구조는 항상 유효합니다.
Column name Type
id int
p_id int

 

문제

  • 트리의 각 노드는 3가지 유형 중 1가지를 나타냅니다.
    • 'Leaf' : 노드가 리프 노드인 경우
    • 'Root' : 노드가 트리의 루트인 경우
    • 'Inner' : 노드가 리프 노드와 루트 노드가 아닌 경우
  • 트리의 각 노드 유형을 조회하는 SQL 문을 작성해주세요.
  • 문제 예시
id p_id
1 null
2 1
3 1
4 2
5 2
  • 출력 예시
id type
1 Root
2 Inner
3 Leaf
4 Leaf
5 Leaf

 

💻 코드

최종 코드

  • 실행 결과

 

코드 풀이

 

반응형

+ Recent posts