[TIL] 23.03.13

문종현·2023년 3월 13일
0

TIL

목록 보기
90/119
post-custom-banner

👉 오늘 한 일

  • 프로그래머스 SQL 문제풀이

프로그래머스 SQL

💡 목표

  • 나만의 컨벤션 지키기(간단하게). 습관을 들이기 위해
  1. 컬럼명, 테이블명은 모두 소문자로
  2. 명령어, 함수는 모두 대문자로
  3. 컬럼명은 Snake case 이용(but, 문제에 있는 컬럼명을 따를 것이라 예외가 있을 수 있음)
  4. 컬럼명 뒤에 콤마 사용 후 줄바꿈

1. 조건에 부합하는 중고거래 댓글 조회하기

  • lv 1, SELECT
  • 날짜에 따라 조회하기 위해 LEFT로 날짜의 일부 추출
SELECT b.title, 
  b.board_id, 
  r.reply_id, 
  r.writer_id,
  r.contents, 
  LEFT(r.created_date, 10) AS created_date
FROM used_goods_board b
JOIN used_goods_reply r
  ON b.board_id = r.board_id
WHERE LEFT(b.created_date,7) = "2022-10"
ORDER BY r.created_date, b.title
  • DATE_FORMAT(%Y-%m-%d) 를 활용해도 됨

2. 즐겨찾기가 가장 많은 식당 정보 출력하기 📌

SELECT food_type,
  rest_id,
  rest_name,
  MAX(favorites) AS favorites
FROM rest_info
GROUP BY food_type
ORDER BY food_type DESC
  • 다른 사람 풀이
    • 서브쿼리를 활용해 음식 종류별 즐겨찾기 수가 가장 많은 것을 골라온 뒤에 정렬
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

3. 카테고리 별 도서 판매량 집계하기

  • lv 3, group by
  • 두 테이블을 조인한 후 날짜를 필터링, 카테고리별로 그룹화한 후 판매량을 모두 더함
SELECT b.category, SUM(bs.sales) AS total_sales
FROM book b
JOIN book_sales bs
  ON b.book_id = bs.book_id
WHERE LEFT(bs.sales_date, 7) = "2022-01"
GROUP BY b.category
ORDER BY b.category

4. 대여 횟수가 많은 자동차들의 월별 대여 횟수 구하기 📌

SELECT MONTH(start_date) AS month, car_id, COUNT(car_id) AS records
FROM car_rental_company_rental_history
WHERE car_id IN (
    SELECT car_id
    FROM car_rental_company_rental_history
    WHERE start_date BETWEEN "2022-08-01" AND "2022-10-31"
    GROUP BY car_id
    HAVING COUNT(*) >= 5)
    AND start_date BETWEEN "2022-08-01" AND "2022-10-31"
GROUP BY month, car_id
ORDER BY month, car_id DESC
profile
자라나라 새싹새싹🌱
post-custom-banner

0개의 댓글