๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
SQL/Programmers

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค][SQL-SELECT] ์กฐ๊ฑด์— ๋ถ€ํ•ฉํ•˜๋Š” ์ค‘๊ณ ๊ฑฐ๋ž˜ ๋Œ“๊ธ€ ์กฐํšŒํ•˜๊ธฐ

by ์ด๋ฎด 2023. 7. 2.
728x90

๐Ÿ’ป ๋ฌธ์ œ ์ฃผ์†Œ : https://school.programmers.co.kr/learn/courses/30/lessons/164673

 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”.

programmers.co.kr

 

๐Ÿ’ป ๋ฌธ์ œ ์„ค๋ช…

๋‹ค์Œ์€ ์ค‘๊ณ ๊ฑฐ๋ž˜ ๊ฒŒ์‹œํŒ ์ •๋ณด๋ฅผ ๋‹ด์€ USED_GOODS_BOARD ํ…Œ์ด๋ธ”๊ณผ ์ค‘๊ณ ๊ฑฐ๋ž˜ ๊ฒŒ์‹œํŒ ์ฒจ๋ถ€ํŒŒ์ผ ์ •๋ณด๋ฅผ ๋‹ด์€ USED_GOODS_REPLY ํ…Œ์ด๋ธ”์ž…๋‹ˆ๋‹ค.  USED_GOODS_BOARD ํ…Œ์ด๋ธ”์€ ๋‹ค์Œ๊ณผ ๊ฐ™์œผ๋ฉฐ BOARD_ID, WRITER_ID, TITLE, CONTENTS, PRICE, CREATED_DATE, STATUS, VIEW์€ ๊ฒŒ์‹œ๊ธ€ ID, ์ž‘์„ฑ์ž ID, ๊ฒŒ์‹œ๊ธ€ ์ œ๋ชฉ, ๊ฒŒ์‹œ๊ธ€ ๋‚ด์šฉ, ๊ฐ€๊ฒฉ, ์ž‘์„ฑ์ผ, ๊ฑฐ๋ž˜์ƒํƒœ, ์กฐํšŒ์ˆ˜๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

Column name Type Nullable
BOARD_ID VARCHAR(5) FALSE
WRITER_ID VARCHAR(50) FALSE
TITLE VARCHAR(100) FALSE
CONTENTS VARCHAR(1000) FALSE
PRICE NUMBER FALSE
CREATED_DATE DATE FALSE
STATUS VARCHAR(10) FALSE
VIEWS NUMBER FALSE

 

USED_GOODS_REPLY ํ…Œ์ด๋ธ”์€ ๋‹ค์Œ๊ณผ ๊ฐ™์œผ๋ฉฐ REPLY_ID, BOARD_ID, WRITER_ID, CONTENTS, CREATED_DATE๋Š” ๊ฐ๊ฐ ๋Œ“๊ธ€ ID, ๊ฒŒ์‹œ๊ธ€ ID, ์ž‘์„ฑ์ž ID, ๋Œ“๊ธ€ ๋‚ด์šฉ, ์ž‘์„ฑ์ผ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

Column name Type Nullable
REPLY_ID VARCHAR(10) FALSE
BOARD_ID VARCHAR(5) FALSE
WRITER_ID VARCHAR(50) FALSE
CONTENTS VARCHAR(1000) TRUE
CREATED_DATE DATE FALSE

 

๐Ÿ’ป ๋ฌธ์ œ

USED_GOODS_BOARD์™€ USED_GOODS_REPLY ํ…Œ์ด๋ธ”์—์„œ 2022๋…„ 10์›”์— ์ž‘์„ฑ๋œ ๊ฒŒ์‹œ๊ธ€ ์ œ๋ชฉ, ๊ฒŒ์‹œ๊ธ€ ID, ๋Œ“๊ธ€ ID, ๋Œ“๊ธ€ ์ž‘์„ฑ์ž ID, ๋Œ“๊ธ€ ๋‚ด์šฉ, ๋Œ“๊ธ€ ์ž‘์„ฑ์ผ์„ ์กฐํšŒํ•˜๋Š” SQL๋ฌธ์„ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”. ๊ฒฐ๊ณผ๋Š” ๋Œ“๊ธ€ ์ž‘์„ฑ์ผ์„ ๊ธฐ์ค€์ƒ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌํ•ด์ฃผ์‹œ๊ณ , ๋Œ“๊ธ€ ์ž‘์„ฑ์ผ์ด ๊ฐ™๋‹ค๋ฉด ๊ฒŒ์‹œ๊ธ€ ์ œ๋ชฉ์„ ๊ธฐ์ค€์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌํ•ด์ฃผ์„ธ์š”.

 

๐Ÿ’ป ์ฝ”๋“œ ๋ฐ ํ’€์ด

select board.TITLE, board.BOARD_ID, reply.REPLY_ID, reply.WRITER_ID, reply.CONTENTS, date_format(reply.created_date, '%Y-%m-%d') as CREATED_DATE
from used_goods_board board
    join used_goods_reply reply
    on board.board_id = reply.board_id
where month(board.created_date) = 10
order by reply.created_date, board.title

* USED_GOODS_BOARD = board

* USED_GOODS_REPLY = reply

 

โ–ท ์กฐ๊ฑด

1) 2022๋…„ 10์›”์— ์ž‘์„ฑ๋œ ๊ฒŒ์‹œ๊ธ€ ์ œ๋ชฉ : month(board.created_date) = 10

2) ๊ฒŒ์‹œ๊ธ€ ์ œ๋ชฉ, ๊ฒŒ์‹œ๊ธ€ ID, ๋Œ“๊ธ€ ID, ๋Œ“๊ธ€ ์ž‘์„ฑ์ž ID, ๋Œ“๊ธ€ ๋‚ด์šฉ, ๋Œ“๊ธ€ ์ž‘์„ฑ์ผ ์กฐํšŒ : select board.TITLE, board.BOARD_ID, reply.REPLY_ID, reply.WRITER_ID, reply.CONTENTS, date_format(reply.created_date, '%Y-%m-%d) as CREATED_DATE

* date_format(a, b) : a๋ฅผ b ํ˜•์‹์— ๋งž๊ฒŒ ๋ฆฌํ„ดํ•˜๋Š” ํ•จ์ˆ˜. ๋ณธ๋ฌธ์—์„œ๋Š” '2022-10-05'์™€ ๊ฐ™์€ ํ˜•ํƒœ๋ฅผ ์š”์ฒญํ–ˆ๊ธฐ์— '%Y(๋Œ€๋ฌธ์ž)-%m-%d' ์ž‘์„ฑ ํ•„์š”

3) ๋Œ“๊ธ€ ์ž‘์„ฑ์ผ ์˜ค๋ฆ„์ฐจ์ˆœ, ๊ฒŒ์‹œ๊ธ€ ์ œ๋ชฉ ์˜ค๋ฆ„์ฐจ์ˆœ : order by reply.created_date, board.title -- asc ์ƒ๋žต ๊ฐ€๋Šฅ

728x90
๋ฐ˜์‘ํ˜•