02/04 SQL ๋ฌธ์ œํ’€์ด(๐ŸŒŸ๐ŸŒŸ๐ŸŒŸ)

Data Architect / Engineerยท2024๋…„ 2์›” 4์ผ
1

1์ผ_1SQL

๋ชฉ๋ก ๋ณด๊ธฐ
24/63
post-thumbnail

๋ฌธ์ œ

  • ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค SQL ๋ฌธ์ œ
  • ์กฐ๊ฑด์— ๋งž๋Š” ์‚ฌ์šฉ์ž ์ •๋ณด ์กฐํšŒํ•˜๊ธฐ / ๋ ˆ๋ฒจ 3
  • ๋ฌธ์ œ ๋‚ด์šฉ : ํ•˜๋‹จ ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ๋ฌธ์ œ [๋งํฌ]


๋‚ด๊ฐ€ ์ž‘์„ฑํ•œ Query

SELECT U.USER_ID
     , U.NICKNAME
     , CONCAT(U.CITY, ' ', U.STREET_ADDRESS1, ' ', U.STREET_ADDRESS2) AS ์ „์ฒด์ฃผ์†Œ
     , CONCAT(LEFT(U.TLNO, 3), '-', SUBSTRING(U.TLNO, 4, 4), '-', RIGHT(U.TLNO, 4)) AS ์ „ํ™”๋ฒˆํ˜ธ
FROM USED_GOODS_BOARD B
    LEFT JOIN USED_GOODS_USER U ON B.WRITER_ID = U.USER_ID
GROUP BY U.USER_ID
HAVING COUNT(U.USER_ID) >= 3
ORDER BY U.USER_ID DESC;
  • USED_GOODS_USER ํ…Œ์ด๋ธ”๊ณผ USED_GOODS_BOARD ํ…Œ์ด๋ธ”์ด 1:M ๊ด€๊ณ„๋ผ๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Œ. (ํ•œ ๋ช…์˜ ์œ ์ €๊ฐ€ ์—ฌ๋Ÿฌ ๊ฒŒ์‹œ๊ธ€์„ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์œผ๋‹ˆ๊นŒ 1:M ๊ด€๊ณ„)

  • ๋”ฐ๋ผ์„œ, USED_GOODS_BOARD ํ…Œ์ด๋ธ”์„ ๊ธฐ์ค€์œผ๋กœ LEFT JOINํ•ด์ค˜์•ผ 'M'๋ ˆ๋ฒจ์˜ ์ง‘ํ•ฉ ๋ฐ์ดํ„ฐ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Œ. U.USER_ID = B.WRITER_ID ๊ธฐ์ค€์œผ๋กœ LEFT JOIN ํ•ด์ค€๋‹ค.

  • ์‚ฌ์šฉ์ž๋ณ„ ๋ฐ์ดํ„ฐ๋ฅผ ํ™•์ธํ•˜๊ณ  ์‹ถ์œผ๋ฏ€๋กœ, USER_ID ๊ธฐ์ค€์œผ๋กœ GROUP BY ํ•ด์ค€๋‹ค.

  • HAVING์ ˆ์—์„œ 3๊ฑด ์ด์ƒ์˜ ๊ฒŒ์‹œ๊ธ€์„ ์ž‘์„ฑํ•œ ์‚ฌ์šฉ์ž๋งŒ ํ•„ํ„ฐ๋ง ํ•˜๊ธฐ ์œ„ํ•ด, COUNT(U.USER_ID)>=3์ธ ๋ฐ์ดํ„ฐ๋งŒ ์ถœ๋ ฅํ•ด์ค€๋‹ค.

  • ์ดํ›„ SELECT์ ˆ์—์„œ ๋ฌธ์ž์—ด ์ฒ˜๋ฆฌ๊ฐ€ ํ•„์š”ํ•˜๋‹ค. ๋จผ์ €, CONCAT()ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•˜์—ฌ, CITY, STREET_ADDRESS1, STREET_ADDRESS2๋ฅผ ํ•ฉ์นœ '์ „์ฒด์ฃผ์†Œ'๋ฅผ ๊ตฌํ•ด์ค€๋‹ค.

  • TLNO ์ปฌ๋Ÿผ์˜ ์ „ํ™”๋ฒˆํ˜ธ์— '-'๋ฅผ ๋„ฃ๊ธฐ ์œ„ํ•ด, LEFT(U.TLNO, 3) (์ฆ‰, 010) ๋ถ€๋ถ„, SUBSTRING(U.TLNO, 4, 4) (์ฆ‰, ๊ฐ€์šด๋ฐ 4๋ฒˆ์งธ ์ˆซ์ž๋ถ€ํ„ฐ 4๊ฐœ์˜ ๋ฒˆํ˜ธ), RIGHT(U.TLNO, 4)(์ฆ‰, ๋’ค์— 4์ž๋ฆฌ ๋ฒˆํ˜ธ)๋ฅผ CONCAT()์„ ์‚ฌ์šฉํ•˜์—ฌ ํ•ฉ์ณ์ค€๋‹ค.

  • ORDER BY๋ฅผ ์ด์šฉํ•ด USER_ID ๊ธฐ์ค€์œผ๋กœ ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌํ•œ๋‹ค.

  • ๐ŸŒŸ๐ŸŒŸ๐ŸŒŸ MYSQL String ๊ด€๋ จ ํ•จ์ˆ˜ (CONCAT, LEFT, RIGHT, SUBSTRING) ์ž˜ ํ™•์ธํ•ด ๋†“์„ ๊ฒƒ!(SQL ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ๋ณด๋Ÿฌ ๊ฐ€๊ธฐ ์ „์— ๊ผญ ๋ณต์Šต!)

profile
์งˆ๋ฌธ์€ ๊ณ„์†๋ผ ์•„์˜ค์—

0๊ฐœ์˜ ๋Œ“๊ธ€