[TIL] 23.03.21

문종현·2023년 3월 21일
0

TIL

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

👉 오늘 한 일

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

프로그래머스 SQL

1. 조건에 맞는 사용자 정보 조회하기

  • lv 3, String & Date
  • CONCAT 을 통해 문자열을 합침. MID 를 통해 시작 인덱스부터 원하는 글자수를 꺼내올 수 있음
SELECT u.user_id, 
    u.nickname, 
    CONCAT(city, " ", street_address1, " ", street_address2) AS "전체주소",
    CONCAT(LEFT(tlno, 3), "-", MID(tlno, 4, 4), "-", RIGHT(tlno, 4)) AS "전화번호"
FROM used_goods_board b
JOIN used_goods_user u
ON b.writer_id = u.user_id
GROUP BY b.writer_id
HAVING COUNT(b.writer_id) >= 3
ORDER BY u.user_id DESC

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

  • lv 3, String & Date
  • 서브쿼리로 조회수가 가장 높은 게시글을 뽑아낸 후 해당 게시글의 파일경로를 CONCAT으로 합침
SELECT CONCAT("/home/grep/src/", f.board_id, "/", f.file_id, f.file_name, f.file_ext) AS file_path
FROM used_goods_board b
JOIN used_goods_file f
ON b.board_id = f.board_id
WHERE views =(
	SELECT MAX(views)
	FROM used_goods_board)
ORDER BY f.file_id DESC

3. 상품 별 오프라인 매출 구하기

  • lv 2, JOIN
  • product_id 로 그룹화한 후 판매량을 더해준 것에 가격을 곱해서 최종 매출액을 구함
SELECT p.product_code, 
    SUM(s.sales_amount) * p.price AS sales
FROM product p
JOIN offline_sale s
ON p.product_id = s.product_id
GROUP BY s.product_id
ORDER BY sales DESC, p.product_code

4. 조건에 맞는 도서와 저자 리스트 출력하기

  • lv 2, JOIN
  • 두 테이블을 조인한 후 카테고리가 경제인 것을 필터링
SELECT b.book_id, 
    a.author_name, 
    DATE_FORMAT(b.published_date, "%Y-%m-%d") AS published_date
FROM book b
JOIN author a
ON b.author_id = a.author_id
WHERE b.category = '경제'
ORDER BY b.published_date

5. 5월 식품들의 총매출 조회하기

  • lv 4, JOIN
  • 두 테이블을 조인한 후 2022년 5월에 해당하는 것만 WHERE절에서 필터링. 제품 별 판매량을 구하기 위해 제품id로 그룹화한 후 더해주고, 가격과 곱해서 총매출을 구함
SELECT o.product_id, 
    p.product_name,
    p.price * SUM(o.amount) AS total_sales
FROM food_product p
JOIN food_order o
ON p.product_id = o.product_id
WHERE DATE_FORMAT(o.produce_date, "%Y-%m") = "2022-05"
GROUP BY o.product_id
ORDER BY total_sales DESC, o.product_id
profile
자라나라 새싹새싹🌱
post-custom-banner

0개의 댓글