GreatAlgorithm-Study / AlgorithmStudy

🌟알고리즘 대장정🌟
6 stars 4 forks source link

[5주차_SQL] SQL 풀이 모음 #62

Closed yeongleej closed 1 month ago

yeongleej commented 1 month ago
## 문제: [문제명](링크)

### 설명

### 코드

### 아이디어
icegosimperson commented 1 month ago

문제: User Activity for the Past 30 Days I

설명

2018.06.28~2019.07.27까지 30일동안 학생 활동 수 구하는 문제

코드

SELECT activity_date AS day, COUNT(DISTINCT user_id) AS active_users
FROM Activity
WHERE activity_date BETWEEN '2019-06-28' AND '2019-07-27'
GROUP BY activity_date
ORDER BY activity_date;

아이디어

Group By 사용한 이유 : 활동날짜를 계산하기 위해 행을 그룹화

SQL 쿼리 순서 지키기 SELECT → FROM → WHERE → GROUP BY → ORDER BY

yeongleej commented 1 month ago

문제: Classes More Than 5 Students

설명

코드

SELECT CLASS
FROM COURSES
GROUP BY CLASS
HAVING COUNT(CLASS) >= 5;

아이디어

문제: Find Followers Count

설명

코드

SELECT USER_ID, COUNT(FOLLOWER_ID) AS FOLLOWERS_COUNT
FROM FOLLOWERS
GROUP BY USER_ID
ORDER BY USER_ID;

아이디어

문제가 너무 쉬운거 같아서 양심상 2개 풀었습니당 ^^ㅎㅎ

Jewan1120 commented 1 month ago

문제: Customers Who Bought All Products

설명

코드

SELECT
    customer_id
FROM
    Customer
GROUP BY
    customer_id
HAVING
    COUNT(DISTINCT product_key) = (
        SELECT
            COUNT(product_key)
        FROM
            Product
    )

아이디어

yeahdy commented 1 month ago

문제: 식품분류별 가장 비싼 식품의 정보 조회하기

설명

코드

SELECT 
    fp.CATEGORY, fp.PRICE, fp.PRODUCT_NAME
FROM FOOD_PRODUCT fp
JOIN 
    (SELECT CATEGORY, MAX(PRICE) MAX_PRICE
    FROM FOOD_PRODUCT
    WHERE CATEGORY IN ('과자','국','김치','식용유')
    GROUP BY CATEGORY) AS sub
ON fp.CATEGORY = sub.CATEGORY AND fp.PRICE = sub.MAX_PRICE
ORDER BY fp.PRICE DESC;

아이디어

baexxbin commented 1 month ago

문제: Find Followers Count

설명

코드

    SELECT user_id, COUNT(follower_id) AS followers_count
    FROM Followers
    GROUP BY user_id
    ORDER BY user_id;

아이디어


문제: 1741. Find Total Time Spent by Each Employee

설명

코드

  SELECT 
    event_day AS day, 
    emp_id,
    SUM(out_time-in_time) AS total_time
  FROM Employees
  GROUP BY emp_id, day;

아이디어

쉬운 문제...ㅎ하나만 풀려했는데 지영님 2개 푸셨길래 저도 2개 풀어봤습니다ㅋㅎㅋㅎ

yeongleej commented 1 month ago

문제: 즐겨찾기가 가장 많은 식당 정보 출력

설명

코드

SELECT FOOD_TYPE, REST_ID, REST_NAME, FAVORITES
FROM REST_INFO
WHERE (FOOD_TYPE, FAVORITES) IN(
        SELECT FOOD_TYPE, MAX(FAVORITES)
        FROM REST_INFO
        GROUP BY FOOD_TYPE
)
ORDER BY FOOD_TYPE DESC

아이디어

결론: 어떤 그룹으로 묶는지 잘 생각하자

Jewan1120 commented 1 month ago

문제: Customers Who Bought All Products

설명

코드

SELECT
    YEAR(A.SALES_DATE) YEAR
    , MONTH(A.SALES_DATE) MONTH
    , B.GENDER
    , COUNT(DISTINCT(A.USER_ID)) USERS
FROM
    ONLINE_SALE A
    INNER JOIN USER_INFO B
        ON A.USER_ID = B.USER_ID
WHERE
    B.GENDER IS NOT NULL
GROUP BY
    YEAR
    , MONTH
    , GENDER
ORDER BY
    YEAR
    , MONTH
    , GENDER

아이디어

baexxbin commented 1 month ago

문제: 1141. User Activity for the Past 30 Days I

설명

코드

  SELECT activity_date AS day,
         COUNT(DISTINCT user_id) AS active_users
  FROM Activity
  WHERE activity_date BETWEEN '2019-06-28' AND '2019-07-27'
  GROUP BY activity_date;

아이디어

icegosimperson commented 1 month ago

문제: 성분으로 구분한 아이스크림 총 주문량

설명

상반기 동안 각 아이스크림 성분 타입과 성분 타입에 대한 아이스크림의 총주문량을 총주문량이 작은 순서대로 조회

코드

SELECT B.INGREDIENT_TYPE, SUM(TOTAL_ORDER) AS TOTAL_ORDER
FROM FIRST_HALF A
    JOIN ICECREAM_INFO B ON A.FLAVOR = B.FLAVOR 
GROUP BY INGREDIENT_TYPE
ORDER BY TOTAL_ORDER ASC

아이디어


문제: 진료과별 총 예약 횟수 출력하기

설명

2022년 5월에 예약한 환자 수를 진료과코드 별로 조회하는 SQL문을 작성

코드

SELECT MCDP_CD AS '진료과코드', COUNT(PT_NO) AS '5월예약건수'
FROM APPOINTMENT
WHERE YEAR(APNT_YMD) = '2022' AND MONTH(APNT_YMD) = '05'
GROUP BY MCDP_CD
ORDER BY 5월예약건수, 진료과코드

아이디어

yeahdy commented 1 month ago

문제: 년, 월, 성별 별 상품 구매 회원 수 구하기

설명

년, 월, 성별 별로 상품을 구매한 회원수를 집계 image

코드

SELECT  
    YEAR(os.SALES_DATE) YEAR, 
    MONTH(os.SALES_DATE) MONTH,
    ui.GENDER,
    COUNT(DISTINCT ui.USER_ID) USERS
FROM USER_INFO ui
INNER JOIN ONLINE_SALE os
ON ui.USER_ID = os.USER_ID
WHERE ui.GENDER IS NOT NULL
GROUP BY MONTH, ui.GENDER
ORDER BY YEAR, MONTH, ui.GENDER;

아이디어

DATE 타입에 YEAR() MONTH()와 같은 날짜 함수를 사용하면 쉽게 특정 날짜/시간만 가져올 수 있음

유용한 날짜 관련 함수가 많아서 참고하면 좋을 것 같아요! 날짜 관련 함수 참고 블로그

KodaHye commented 1 month ago

문제: 월별 잡은 물고기 수 구하기

설명

FISH_INFO 테이블에 날짜 별로 물고기를 잡은 정보가 있을 때, 월 별로 물고기를 몇 마리 잡았는지 나타내는 테이블 출력하기

코드

SELECT COUNT(*) `FISH_COUNT`, MONTH(TIME) `MONTH`
FROM FISH_INFO
GROUP BY MONTH
ORDER BY MONTH ASC

아이디어

KodaHye commented 1 month ago

문제: 물고기 종류 별 잡은 수 구하기

설명

코드

SELECT COUNT(*) AS `FISH_COUNT`, B.FISH_NAME `FISH_NAME`
FROM FISH_INFO A
LEFT JOIN FISH_NAME_INFO B ON A.FISH_TYPE = B.FISH_TYPE
GROUP BY FISH_NAME
ORDER BY FISH_COUNT DESC

아이디어