GreatAlgorithm-Study / AlgorithmStudy

1 stars 5 forks source link

[6주차_SQL] SQL 풀이 모음 #74

Closed icegosimperson closed 1 week ago

icegosimperson commented 2 weeks ago
## 문제: [문제명](링크)

### 설명

### 코드

### 아이디어
KodaHye commented 1 week ago

문제: 있었는데요 없었습니다

설명

동물의 보호 관련 데이터가 있는 ANIMAL_INS테이블과 입양 데이터에 대한 ANIMAL_OUTS 테이블이 있을 때, 입양일이 보호 시작일보다 빠른 데이터 조회하기

코드

SELECT A.ANIMAL_ID, A.NAME
FROM ANIMAL_INS A LEFT JOIN ANIMAL_OUTS B ON A.ANIMAL_ID = B.ANIMAL_ID
WHERE A.DATETIME > B.DATETIME
ORDER BY A.DATETIME

아이디어


문제: 오랜 기간 보호한 동물(1)

설명

보호소에 맡겨진 정보(ANIMAL_INS)에 대한 테이블과 입양된 정보(ANIMAL_OUTS)에 대한 테이블이 주어졌을 때, 오랜 기간 보호된 동물 Top3 뽑기

코드

SELECT A.NAME, A.DATETIME
FROM ANIMAL_INS A
WHERE A.ANIMAL_ID NOT IN (SELECT ANIMAL_ID FROM ANIMAL_OUTS)
ORDER BY A.DATETIME 
LIMIT 3

아이디어

icegosimperson commented 1 week ago

문제: 조건에 맞는 도서와 저자 리스트 출력하기

설명

경제 카테고리에 속하는 도서들의 도서 ID(BOOK_ID), 저자명(AUTHOR_NAME), 출판일(PUBLISHED_DATE) 리스트를 출력 정렬 : 출판일 기준 오름차순

코드

SELECT A.BOOK_ID, B.AUTHOR_NAME, DATE_FORMAT(A.PUBLISHED_DATE, '%Y-%m-%d') AS PUBLISHED_DATE
FROM BOOK A JOIN AUTHOR B ON A.AUTHOR_ID = B.AUTHOR_ID
WHERE CATEGORY = '경제'
ORDER BY A.PUBLISHED_DATE ASC;

아이디어

baexxbin commented 1 week ago

문제: 570. Managers with at Least 5 Direct Reports

설명

코드

SELECT e.name
FROM Employee e
JOIN Employee m ON e.id = m.managerId
GROUP BY m.managerId
HAVING COUNT(m.managerId) >=5;

아이디어

yeahdy commented 1 week ago

문제: 5월 식품들의 총매출 조회하기

설명

코드

SELECT
    fp.PRODUCT_ID
    ,fp.PRODUCT_NAME
    ,SUM(fp.PRICE*fo.AMOUNT) AS TOTAL_SALES
FROM FOOD_ORDER fo
INNER JOIN FOOD_PRODUCT fp
ON fo.PRODUCT_ID = fp.PRODUCT_ID
WHERE fo.PRODUCE_DATE LIKE '2022-05%'
GROUP BY fp.PRODUCT_ID,fp.PRODUCT_NAME
ORDER BY TOTAL_SALES DESC ,fp.PRODUCT_ID;

아이디어

Jewan1120 commented 1 week ago

문제: 1280. Students and Examinations

설명

코드

SELECT
    A.student_id
    , A.student_name
    , B.subject_name
    , COUNT(C.student_id) attended_exams
FROM
    Students A
    CROSS JOIN Subjects B
    LEFT JOIN Examinations C
        ON A.student_id = C.student_id
        AND B.subject_name = C.subject_name
GROUP BY
    A.student_id
    , A.student_name
    , B.subject_name
ORDER BY
    A.student_id
    , A.student_name
    , B.subject_name

아이디어

yeongleej commented 1 week ago

문제: 대장균들의 자식의 수 구하기

설명

코드

SELECT P.ID, COUNT(C.ID) AS CHILD_COUNT
FROM ECOLI_DATA P
LEFT JOIN ECOLI_DATA C
ON P.ID = C.PARENT_ID
GROUP BY(P.ID)
ORDER BY P.ID;

아이디어

yeongleej commented 1 week ago

문제: 주문량이 많은 아이스크림들 조회하기

설명

코드

SELECT J.FLAVOR
FROM JULY J
LEFT JOIN FIRST_HALF F
ON J.FLAVOR = F.FLAVOR
GROUP BY J.FLAVOR
ORDER BY SUM(J.TOTAL_ORDER)+SUM(F.TOTAL_ORDER) DESC
LIMIT 3

아이디어

baexxbin commented 1 week ago

문제: 1907. Count Salary Categories

설명

+-------------+------+ | Column Name | Type | +-------------+------+ | account_id | int | | income | int | +-------------+------+

코드

  SELECT 'High Salary' AS category,
      SUM(income > 50000) AS accounts_count
  FROM Accounts
  UNION
  SELECT 'Average Salary' AS category,
      SUM(income BETWEEN 20000 AND 50000) AS accounts_count
  FROM Accounts
  UNION
  SELECT 'Low Salary' AS category,
      SUM(income < 20000) AS accounts_count
  FROM Accounts

아이디어

우선, 이번주 주제가 Join이였으나 해당 문제는 UNION으로 풀었음...!

JOIN은 수평적 결합, UNION은 수직적 결합

icegosimperson commented 1 week ago

문제: 있었는데요 없었습니다

설명

동물의 보호 관련 데이터가 있는 ANIMAL_INS테이블과 입양 데이터에 대한 ANIMAL_OUTS 테이블이 있을 때, 입양일이 보호 시작일보다 빠른 데이터 조회

코드

SELECT A.ANIMAL_ID, A.NAME
FROM ANIMAL_INS A LEFT JOIN ANIMAL_OUTS B ON A.ANIMAL_ID = B.ANIMAL_ID
WHERE A.DATETIME > B.DATETIME
ORDER BY A.DATETIME;

아이디어

KodaHye commented 1 week ago

문제: 보호소에서 중성화한 동물

설명

ANIMAL_INS, ANIMAL_OUTS 테이블이 있을 때, 보호소에서 중성화된 동물들의 데이터 출력하

코드

SELECT A.ANIMAL_ID, A.ANIMAL_TYPE, A.NAME
FROM ANIMAL_INS A 
    LEFT JOIN ANIMAL_OUTS B
    ON A.ANIMAL_ID = B.ANIMAL_ID
WHERE 
    A.SEX_UPON_INTAKE LIKE 'Intact%'
    AND 
    B.SEX_UPON_OUTCOME NOT LIKE 'Intact%'
ORDER BY A.ANIMAL_ID ASC

아이디어

yeahdy commented 1 week ago

문제: 조회수가 가장 많은 중고거래 게시판의 첨부파일 조회하기

설명

코드

SELECT 
    CONCAT('/home/grep/src/',ugf.BOARD_ID,'/',ugf.FILE_ID,ugf.FILE_NAME,ugf.FILE_EXT) FILE_PATH
FROM USED_GOODS_BOARD ugb
INNER JOIN USED_GOODS_FILE ugf
ON ugb.BOARD_ID = ugf.BOARD_ID
WHERE ugb.VIEWS = (SELECT MAX(VIEWS) FROM USED_GOODS_BOARD)
ORDER BY ugf.FILE_ID DESC;

아이디어

Jewan1120 commented 1 week ago

문제: 1934. Confirmation Rate

설명

Signups 테이블에 저장된 유저별로 Confirmations테이블에서 action칼럼의 confirmed비율을 출력

코드

SELECT
    A.user_id
    , ROUND(AVG(IF(B.action = 'confirmed', 1, 0)), 2) confirmation_rate
FROM
    Signups A
    LEFT JOIN Confirmations B
        ON A.user_id = B.user_id
GROUP BY
    A.user_id

아이디어