👉 오늘 한 일
프로그래머스 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