Post

โœ๐Ÿป programmers Lv1. MySQL -21 ๋ฌธ์ œ(24.10.16)

โœ๐Ÿป programmers Lv1. MySQL -21 ๋ฌธ์ œ(24.10.16)

programmers Lv1. MySQL -21 ๋ฌธ์ œ(24.10.16)

9) ํ‰๋ถ€์™ธ๊ณผ ๋˜๋Š” ์ผ๋ฐ˜์™ธ๊ณผ ์˜์‚ฌ ๋ชฉ๋ก ์ถœ๋ ฅํ•˜๊ธฐ

  • DOCTOR ํ…Œ์ด๋ธ”์—์„œ ์ง„๋ฃŒ๊ณผ๊ฐ€ ํ‰๋ถ€์™ธ๊ณผ(CS)์ด๊ฑฐ๋‚˜ ์ผ๋ฐ˜์™ธ๊ณผ(GS)์ธ ์˜์‚ฌ์˜ ์ด๋ฆ„, ์˜์‚ฌID, ์ง„๋ฃŒ๊ณผ, ๊ณ ์šฉ์ผ์ž๋ฅผ ์กฐํšŒํ•˜๋Š” SQL๋ฌธ์„ ์ž‘์„ฑํ•˜๋ผ. ์ด๋•Œ ๊ฒฐ๊ณผ๋Š” ๊ณ ์šฉ์ผ์ž๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌํ•˜๊ณ , ๊ณ ์šฉ์ผ์ž๊ฐ€ ๊ฐ™๋‹ค๋ฉด ์ด๋ฆ„์„ ๊ธฐ์ค€์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ.
1
2
3
4
SELECT DR_NAME, DR_ID, MCDP_CD, DATE_FORMAT(HIRE_YMD, "%Y-%m-%d") AS HIRE_YMD
FROM DOCTOR
WHERE MCDP_CD = "CS" OR MCDP_CD = "GS"
ORDER BY HIRE_YMD DESC, DR_NAME ASC;
  • DATE_FORMAT(date, format)

    • date : ํฌ๋งท์„ ์ ์šฉํ•  ๋‚ ์งœ ๋˜๋Š” datetime ๊ฐ’

    • format : ์›ํ•˜๋Š” ์ถœ๋ ฅ ํ˜•์‹

  • ํฌ๋งท ์˜ˆ์‹œ

    • %Y: 4์ž๋ฆฌ ์—ฐ๋„ (์˜ˆ: 2024)

    • %y: 2์ž๋ฆฌ ์—ฐ๋„ (์˜ˆ: 24)
    • %m: 2์ž๋ฆฌ ์›” (01์—์„œ 12๊นŒ์ง€, ์˜ˆ: 10)
    • %b: ์•ฝ์–ด๋กœ ๋œ ์›” ์ด๋ฆ„ (์˜ˆ: Jan, Feb)
    • %M: ์ „์ฒด ์›” ์ด๋ฆ„ (์˜ˆ: January, February)
    • %d: 2์ž๋ฆฌ ์ผ (01์—์„œ 31๊นŒ์ง€)
    • %H: 24์‹œ๊ฐ„ ํ˜•์‹์˜ ์‹œ (00์—์„œ 23๊นŒ์ง€)
    • %i: ๋ถ„ (00์—์„œ 59๊นŒ์ง€)
    • %s: ์ดˆ (00์—์„œ 59๊นŒ์ง€)



10) ์—ญ์ˆœ ์ •๋ ฌํ•˜๊ธฐ

  • ๋™๋ฌผ ๋ณดํ˜ธ์†Œ์— ๋“ค์–ด์˜จ ๋ชจ๋“  ๋™๋ฌผ์˜ ์ด๋ฆ„๊ณผ ๋ณดํ˜ธ ์‹œ์ž‘์ผ์„ ์กฐํšŒํ•˜๋Š” SQL๋ฌธ์„ ์ž‘์„ฑํ•˜๋ผ. ์ด๋•Œ ๊ฒฐ๊ณผ๋Š” ANIMAL_ID ์—ญ์ˆœ์œผ๋กœ ์ถœ๋ ฅํ•˜๋ผ.
1
2
3
SELECT NAME, DATETIME
FROM ANIMAL_INS
ORDER BY ANIMAL_ID DESC;



11) ์กฐ๊ฑด์— ๋งž๋Š” ํšŒ์›์ˆ˜ ๊ตฌํ•˜๊ธฐ

  • USER_INFO ํ…Œ์ด๋ธ”์—์„œ 2021๋…„์— ๊ฐ€์ž…ํ•œ ํšŒ์› ์ค‘ ๋‚˜์ด๊ฐ€ 20์„ธ ์ด์ƒ 29์„ธ ์ดํ•˜์ธ ํšŒ์›์ด ๋ช‡ ๋ช…์ธ์ง€ ์ถœ๋ ฅ
1
2
3
SELECT COUNT(USER_ID) AS USERS
FROM USER_INFO
WHERE AGE >=20 AND AGE <=29 AND JOINED LIKE '2021%'
  • ๋ฌธ์ž์—ด์„ ์‚ฌ์šฉํ•  ๋•Œ๋Š” ํ•ญ์ƒ ์ž‘์€๋”ฐ์˜ดํ‘œ(')๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค. ์ด๋Š” ๊ฐ€๋…์„ฑ์„ ๋†’์ด๊ณ , SQL ํ‘œ์ค€์— ๋งž์ถ”๋Š” ๋ฐ ๋„์›€์ด ๋จ.

  • โ— ๋‹ค๋ฅธ ์‚ฌ๋žŒ ํ’€์ด

1
2
3
SELECT COUNT(USER_ID) AS USERS
FROM USER_INFO
WHERE AGE >=20 AND AGE <=29 AND YEAR(JOINED) = '2021%'



12) ์ด๋ฆ„์ด ์—†๋Š” ๋™๋ฌผ์˜ ์•„์ด๋””

  • ๋™๋ฌผ ๋ณดํ˜ธ์†Œ์— ๋“ค์–ด์˜จ ๋™๋ฌผ ์ค‘, ์ด๋ฆ„์ด ์—†๋Š” ์ฑ„๋กœ ๋“ค์–ด์˜จ ๋™๋ฌผ์˜ ID๋ฅผ ์กฐํšŒํ•˜๋Š” sql๋ฌธ ์ž‘์„ฑ
1
2
3
SELECT ANIMAL_ID
FROM ANIMAL_INS
WHERE NAME IS NULL;



13) ์ธ๊ธฐ์žˆ๋Š” ์•„์ด์Šคํฌ๋ฆผ

  • ์ƒ๋ฐ˜๊ธฐ์— ํŒ๋งค๋œ ์•„์ด์Šคํฌ๋ฆผ์˜ ๋ง›์„ ์ด์ฃผ๋ฌธ๋Ÿ‰์„ ๊ธฐ์ค€์œผ๋กœ ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌํ•˜๊ณ  ์ด์ฃผ๋ฌธ๋Ÿ‰์ด ๊ฐ™๋‹ค๋ฉด ์ถœํ•˜ ๋ฒˆํ˜ธ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌํ•˜์—ฌ ์กฐํšŒํ•˜๋Š” SQL ๋ฌธ์„ ์ž‘์„ฑ
1
2
3
SELECT FLAVOR
FROM FIRST_HALF
ORDER BY TOTAL_ORDER DESC, SHIPMENT_ID ASC;



14) 12์„ธ ์ดํ•˜์ธ ์—ฌ์ž ํ™˜์ž ๋ชฉ๋ก ์ถœ๋ ฅํ•˜๊ธฐ

  • PATIENT ํ…Œ์ด๋ธ”์—์„œ 12์„ธ ์ดํ•˜์ธ ์—ฌ์žํ™˜์ž์˜ ํ™˜์ž์ด๋ฆ„, ํ™˜์ž๋ฒˆํ˜ธ, ์„ฑ๋ณ„์ฝ”๋“œ, ๋‚˜์ด, ์ „ํ™”๋ฒˆํ˜ธ๋ฅผ ์กฐํšŒํ•˜๋Š” SQL๋ฌธ์„ ์ž‘์„ฑ. ์ด๋•Œ ์ „ํ™”๋ฒˆํ˜ธ๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ, โ€˜NONEโ€™์œผ๋กœ ์ถœ๋ ฅ์‹œ์ผœ ์ฃผ์‹œ๊ณ  ๊ฒฐ๊ณผ๋Š” ๋‚˜์ด๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌํ•˜๊ณ , ๋‚˜์ด ๊ฐ™๋‹ค๋ฉด ํ™˜์ž์ด๋ฆ„์„ ๊ธฐ์ค€์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ
1
2
3
4
SELECT PT_NAME, PT_NO, GEND_CD, AGE, IFNULL(TLNO, 'NONE')
FROM PATIENT
WHERE GEND_CD LIKE 'W' AND AGE <=12 
ORDER BY AGE DESC, PT_NAME ASC;
  • โ— ์ฒ˜์Œ ํ‹€๋ ธ๋˜ ๋ถ€๋ถ„
1
2
3
4
5
SELECT PT_NAME, PT_NO, GEND_CD, AGE, TLNO
FROM PATIENT
WHERE GEND_CD LIKE 'W' AND AGE <= 12 AND IFNULL(TLNO, 'NONE')
ORDER BY AGE DESC, PT_NAME ASC;

  • ๋‹ค์Œ๊ณผ ๊ฐ™์ด where์ ˆ์— ์‚ฌ์šฉํ–ˆ๋Š”๋ฐ where ์ ˆ์—์„œ์˜ ์กฐ๊ฑด์€ ๋ฐ˜๋“œ์‹œ true ๋˜๋Š” false์—ฌ์•ผ ํ•˜๋Š”๋ฐ IFNULL(TLNO, 'NONE')๋Š” TLNO๊ฐ€ NULL์ด ์•„๋‹ ๊ฒฝ์šฐ ๊ทธ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๊ณ , NULL์ผ ๊ฒฝ์šฐ 'NONE'์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

  • ์ด๊ฒƒ์€ ํ•ญ์ƒ true ๋˜๋Š” false๋กœ ๋ฐ˜ํ™˜๋˜์ง€ ์•Š์œผ๋ฏ€๋กœ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.



15) ์กฐ๊ฑด์— ๋งž๋Š” ๋„์„œ ๋ฆฌ์ŠคํŠธ ์ถœ๋ ฅํ•˜๊ธฐ

  • BOOK ํ…Œ์ด๋ธ”์—์„œ 2021๋…„์— ์ถœํŒ๋œ '์ธ๋ฌธ' ์นดํ…Œ๊ณ ๋ฆฌ์— ์†ํ•˜๋Š” ๋„์„œ ๋ฆฌ์ŠคํŠธ๋ฅผ ์ฐพ์•„์„œ ๋„์„œ ID(BOOK_ID), ์ถœํŒ์ผ (PUBLISHED_DATE)์„ ์ถœ๋ ฅํ•˜๋Š” SQL๋ฌธ์„ ์ž‘์„ฑ, ์ถœํŒ์ผ์„ ๊ธฐ์ค€์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ
1
2
3
SELECT BOOK_ID, DATE_FORMAT(PUBLISHED_DATE,"%Y-%m-%d") AS PUBLISHED_DATE
FROM BOOK
WHERE CATEGORY LIKE '์ธ๋ฌธ' AND PUBLISHED_DATE LIKE '2021%'



16) ๊ณผ์ผ๋กœ ๋งŒ๋“  ์•„์ด์Šคํฌ๋ฆผ ๊ณ ๋ฅด๊ธฐ

  • ์ƒ๋ฐ˜๊ธฐ ์•„์ด์Šคํฌ๋ฆผ ์ด์ฃผ๋ฌธ๋Ÿ‰์ด 3,000๋ณด๋‹ค ๋†’์œผ๋ฉด์„œ ์•„์ด์Šคํฌ๋ฆผ์˜ ์ฃผ ์„ฑ๋ถ„์ด ๊ณผ์ผ์ธ ์•„์ด์Šคํฌ๋ฆผ์˜ ๋ง›์„ ์ด์ฃผ๋ฌธ๋Ÿ‰์ด ํฐ ์ˆœ์„œ๋Œ€๋กœ ์กฐํšŒํ•˜๋Š” SQL ๋ฌธ์„ ์ž‘์„ฑ
1
2
3
4
5
SELECT A.FLAVOR
FROM FIRST_HALF A
JOIN ICECREAM_INFO B ON A.FLAVOR = B.FLAVOR
WHERE A.TOTAL_ORDER >3000 AND B.INGREDIENT_TYPE LIKE 'fruit_based'
ORDER BY A.TOTAL_ORDER DESC;
  • ๋‘ ๊ฐœ์˜ ํ…Œ์ด๋ธ”์„ ์—ฐ๊ฒฐํ•ด์•ผ ๋˜๋‹ˆ join์„ ํ•ด์•ผ ๋จ. FIRST_HALF์™€ ICECREAM_INFO ํ…Œ์ด๋ธ”์„ join์œผ๋กœ ๊ฒฐํ•ฉํ•จ.

  • ์—ฐ๊ฒฐ ๊ธฐ์ค€์€ ์–ด๋–ป๊ฒŒ ๋ ๊นŒ?

    • ON A.FLAVOR = B.FLAVOR๋Š” FIRST_HALF ํ…Œ์ด๋ธ”์˜ FLAVOR ์—ด๊ณผ ICECREAM_INFO ํ…Œ์ด๋ธ”์˜ FLAVOR ์—ด์ด ๊ฐ™์€ ํ–‰์„ ์„œ๋กœ ์—ฐ๊ฒฐํ•˜๊ฒ ๋‹ค๋Š” ์˜๋ฏธ์ž„.



17) ํ‰๊ท  ์ผ์ผ ๋Œ€์—ฌ ์š”๊ธˆ ๊ตฌํ•˜๊ธฐ

  • CAR_RENTAL_COMPANY_CAR ํ…Œ์ด๋ธ”์—์„œ ์ž๋™์ฐจ ์ข…๋ฅ˜๊ฐ€ โ€˜SUVโ€™์ธ ์ž๋™์ฐจ๋“ค์˜ ํ‰๊ท  ์ผ์ผ ๋Œ€์—ฌ ์š”๊ธˆ์„ ์ถœ๋ ฅํ•˜๋Š” SQL๋ฌธ์„ ์ž‘์„ฑ. ์ด๋•Œ ํ‰๊ท  ์ผ์ผ ๋Œ€์—ฌ ์š”๊ธˆ์€ ์†Œ์ˆ˜ ์ฒซ ๋ฒˆ์งธ ์ž๋ฆฌ์—์„œ ๋ฐ˜์˜ฌ๋ฆผํ•˜๊ณ , ์ปฌ๋Ÿผ๋ช…์€ AVERAGE_FEE ๋กœ ์ง€์ •
1
2
3
SELECT ROUND(AVG(DAILY_FEE)) AS AVERAGE_FEE
FROM CAR_RENTAL_COMPANY_CAR
WHERE CAR_TYPE LIKE 'SUV';
  • ์†Œ์ˆ˜์  ๋ฐ˜์˜ฌ๋ฆผ : ROUND()

    • SELECT ROUND(1234.56789 ,-1) FROM DUAL // 1230
  • ์ˆซ์ž์˜ ํŠน์ • ์ž๋ฆฌ์ˆ˜ ์ดํ•˜ ๋ฒ„๋ฆผ : TRUNCATE()



18) ๋ชจ๋“  ๋ ˆ์ฝ”๋“œ ์กฐํšŒํ•˜๊ธฐ

  • ๋™๋ฌผ ๋ณดํ˜ธ์†Œ์— ๋“ค์–ด์˜จ ๋ชจ๋“  ๋™๋ฌผ์˜ ์ •๋ณด๋ฅผ ANIMAL_ID์ˆœ์œผ๋กœ ์กฐํšŒํ•˜๋Š” SQL๋ฌธ์„ ์ž‘์„ฑ
1
2
SELECT *
FROM ANIMAL_INS



19) ํŠน์ • ์˜ต์…˜์ด ํฌํ•จ๋œ ์ž๋™์ฐจ ๋ฆฌ์ŠคํŠธ ๊ตฌํ•˜๊ธฐ

  • CAR_RENTAL_COMPANY_CAR ํ…Œ์ด๋ธ”์—์„œ โ€˜๋„ค๋น„๊ฒŒ์ด์…˜โ€™ ์˜ต์…˜์ด ํฌํ•จ๋œ ์ž๋™์ฐจ ๋ฆฌ์ŠคํŠธ๋ฅผ ์ถœ๋ ฅํ•˜๋Š” SQL๋ฌธ์„ ์ž‘์„ฑ. ์ž๋™์ฐจ ID๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌ
1
2
3
4
SELECT *
FROM CAR_RENTAL_COMPANY_CAR
WHERE OPTIONS LIKE '%๋„ค๋น„๊ฒŒ์ด์…˜%'
ORDER BY CAR_ID DESC;



20) ์žก์€ ๋ฌผ๊ณ ๊ธฐ ์ค‘ ๊ฐ€์žฅ ํฐ ๋ฌผ๊ณ ๊ธฐ์˜ ๊ธธ์ด ๊ตฌํ•˜๊ธฐ

  • FISH_INFO ํ…Œ์ด๋ธ”์—์„œ ์žก์€ ๋ฌผ๊ณ ๊ธฐ ์ค‘ ๊ฐ€์žฅ ํฐ ๋ฌผ๊ณ ๊ธฐ์˜ ๊ธธ์ด๋ฅผ โ€˜cmโ€™ ๋ฅผ ๋ถ™์—ฌ ์ถœ๋ ฅํ•˜๋Š” SQL ๋ฌธ์„ ์ž‘์„ฑ. ์ปฌ๋Ÿผ๋ช…์€ MAX_LENGTH๋กœ ์ง€์ •
1
2
SELECT CONCAT(MAX(LENGTH), 'cm') AS MAX_LENGTH
FROM FISH_INFO
  • CONCAT() : ์—ฌ๋Ÿฌ ๋ฌธ์ž์—ด์„ ํ•˜๋‚˜์˜ ๋ฌธ์ž์—ด๋กœ ํ•ฉ์น  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ํ•จ์ˆ˜

    • CONnect (์—ฐ๊ฒฐ) + cat = ๊ณ ์–‘์ด๊ฐ€ ๊ท€์—ฝ๊ฒŒ ์—ฐ๊ฒฐ๋˜์–ด์žˆ๋Š” ๊ฑฐ ์ƒ๊ฐ ๐Ÿ˜ธ



21) ์ž”์ฑ™์ด ์žก์€ ์ˆ˜ ๊ตฌํ•˜๊ธฐ

  • ์žก์€ ๋ฌผ๊ณ ๊ธฐ ์ค‘ ๊ธธ์ด๊ฐ€ 10cm ์ดํ•˜์ธ ๋ฌผ๊ณ ๊ธฐ์˜ ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•˜๋Š” SQL ๋ฌธ์„ ์ž‘์„ฑ. ์ปฌ๋ ด๋ช… FISH_COUNT๋กœ ์ง€์ •
1
2
3
SELECT COUNT(ID) AS FISH_COUNT
FROM FISH_INFO
WHERE LENGTH IS NULL;



22) Python ๊ฐœ๋ฐœ์ž ์ฐพ๊ธฐ

  • DEVELOPER_INFOS ํ…Œ์ด๋ธ”์—์„œ Python ์Šคํ‚ฌ์„ ๊ฐ€์ง„ ๊ฐœ๋ฐœ์ž์˜ ์ •๋ณด๋ฅผ ์กฐํšŒ. Python ์Šคํ‚ฌ์„ ๊ฐ€์ง„ ๊ฐœ๋ฐœ์ž์˜ ID, ์ด๋ฉ”์ผ, ์ด๋ฆ„, ์„ฑ์„ ์กฐํšŒํ•˜๋Š” SQL ๋ฌธ์„ ์ž‘์„ฑ. ๊ฒฐ๊ณผ๋Š” ID๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ
1
2
3
4
SELECT ID, EMAIL, FIRST_NAME, LAST_NAME
FROM DEVELOPER_INFOS
WHERE SKILL_1 LIKE 'Python' OR SKILL_2 LIKE 'Python' OR SKILL_3 LIKE 'Python'
ORDER BY ID ASC;



23) ์ตœ๋Œ€๊ฐ’ ๊ตฌํ•˜๊ธฐ

  • ๊ฐ€์žฅ ์ตœ๊ทผ์— ๋“ค์–ด์˜จ ๋™๋ฌผ์€ ์–ธ์ œ ๋“ค์–ด์™”๋Š”์ง€ ์กฐํšŒํ•˜๋Š” SQL ๋ฌธ์„ ์ž‘์„ฑ
1
2
3
SELECT DATETIME AS '์‹œ๊ฐ„' 
FROM ANIMAL_INS
ORDER BY DATETIME DESC LIMIT 1;



24) ํ•œ ํ•ด์— ์žก์€ ๋ฌผ๊ณ ๊ธฐ ์ˆ˜ ๊ตฌํ•˜๊ธฐ

  • FISH_INFO ํ…Œ์ด๋ธ”์—์„œ 2021๋…„๋„์— ์žก์€ ๋ฌผ๊ณ ๊ธฐ ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•˜๋Š” SQL ๋ฌธ์„ ์ž‘์„ฑ. ์ปฌ๋Ÿผ๋ช…์€ FISH_COUNT๋กœ ์ง€์ •
1
2
3
SELECT COUNT(ID) AS FISH_COUNT
FROM FISH_INFO
WHERE YEAR(TIME) LIKE '2021';



25) ์žก์€ ๋ฌผ๊ณ ๊ธฐ์˜ ํ‰๊ท  ๊ธธ์ด ๊ตฌํ•˜๊ธฐ

  • ์žก์€ ๋ฌผ๊ณ ๊ธฐ์˜ ํ‰๊ท  ๊ธธ์ด๋ฅผ ์ถœ๋ ฅํ•˜๋Š” SQL๋ฌธ์„ ์ž‘์„ฑ. ํ‰๊ท  ๊ธธ์ด๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ปฌ๋Ÿผ ๋ช…์€ AVERAGE_LENGTH๋กœ, ํ‰๊ท  ๊ธธ์ด๋Š” ์†Œ์ˆ˜์  3์งธ์ž๋ฆฌ์—์„œ ๋ฐ˜์˜ฌ๋ฆผํ•˜๋ฉฐ, 10cm ์ดํ•˜์˜ ๋ฌผ๊ณ ๊ธฐ๋“ค์€ 10cm ๋กœ ์ทจ๊ธ‰ํ•˜์—ฌ ํ‰๊ท  ๊ธธ์ด ๊ตฌํ•˜๊ธฐ
1
2
SELECT ROUND(AVG(IFNULL(LENGTH,10)),2) AS AVERAGE_LENGTH
FROM FISH_INFO



26) ์ž๋™์ฐจ ๋Œ€์—ฌ ๊ธฐ๋ก์—์„œ ์žฅ๊ธฐ/๋‹จ๊ธฐ ๋Œ€์—ฌ ๊ตฌ๋ถ„ํ•˜๊ธฐ

  • CAR_RENTAL_COMPANY_RENTAL_HISTORY ํ…Œ์ด๋ธ”์—์„œ ๋Œ€์—ฌ ์‹œ์ž‘์ผ์ด 2022๋…„ 9์›”์— ์†ํ•˜๋Š” ๋Œ€์—ฌ ๊ธฐ๋ก์— ๋Œ€ํ•ด์„œ ๋Œ€์—ฌ ๊ธฐ๊ฐ„์ด 30์ผ ์ด์ƒ์ด๋ฉด โ€˜์žฅ๊ธฐ ๋Œ€์—ฌโ€™ ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด โ€˜๋‹จ๊ธฐ ๋Œ€์—ฌโ€™ ๋กœ ํ‘œ์‹œํ•˜๋Š” ์ปฌ๋Ÿผ(์ปฌ๋Ÿผ๋ช…: RENT_TYPE)์„ ์ถ”๊ฐ€ํ•˜์—ฌ ๋Œ€์—ฌ๊ธฐ๋ก์„ ์ถœ๋ ฅํ•˜๋Š” SQL๋ฌธ์„ ์ž‘์„ฑ. ๋Œ€์—ฌ ๊ธฐ๋ก ID๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌ
1
2
3
4
5
6
7
8
9
10
SELECT HISTORY_ID, 
        CAR_ID, 
        DATE_FORMAT(START_DATE,'%Y-%m-%d') AS START_DATE, 
        DATE_FORMAT(END_DATE,'%Y-%m-%d') AS END_DATE, 
CASE 
    WHEN DATEDIFF(END_DATE, START_DATE) < 29 THEN '๋‹จ๊ธฐ ๋Œ€์—ฌ'       ELSE '์žฅ๊ธฐ ๋Œ€์—ฌ'
END AS RENT_TYPE
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
WHERE START_DATE LIKE '2022-09%'
ORDER BY HISTORY_ID DESC;
  • CASE : ์กฐ๊ฑด๋ฌธ์„ ์‹œ์ž‘ํ•˜๋Š” ํ‚ค์›Œ๋“œ. ์—ฌ๋Ÿฌ ์กฐ๊ฑด์„ ํ‰๊ฐ€ํ•˜๊ณ , ์กฐ๊ฑด์ด ๋งž๋Š” ๊ฒฝ์šฐ์— ํ•ด๋‹นํ•˜๋Š” ๊ฐ’์„ ๋ฐ˜ํ™˜

  • WHEN : ์กฐ๊ฑด์„ ์ง€์ •ํ•˜๋Š” ๋ถ€๋ถ„

    • DATEDIFF(END_DATE, START_DATE)๋Š” ๋‘ ๋‚ ์งœ ์‚ฌ์ด์˜ ์ผ์ˆ˜ ์ฐจ์ด๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” ํ•จ์ˆ˜
  • THEN : ์กฐ๊ฑด์ด ์ฐธ์ผ ๊ฒฝ์šฐ ๋ฐ˜ํ™˜ํ•  ๊ฐ’์„ ์ง€์ •

  • ELSE : ๋ชจ๋“  ์กฐ๊ฑด์ด ๊ฑฐ์ง“์ผ ๊ฒฝ์šฐ ๋ฐ˜ํ™˜ํ•  ๊ฐ’์„ ์ง€์ •

  • END : CASE๋ฌธ์ด ๋๋‚ฌ์Œ์„ ๋‚˜ํƒ€๋ƒ„



27) ๊ฐ€์žฅ ํฐ ๋ฌผ๊ณ ๊ธฐ 10๋งˆ๋ฆฌ ๊ตฌํ•˜๊ธฐ

  • FISH_INFO ํ…Œ์ด๋ธ”์—์„œ ๊ฐ€์žฅ ํฐ ๋ฌผ๊ณ ๊ธฐ 10๋งˆ๋ฆฌ์˜ ID์™€ ๊ธธ์ด๋ฅผ ์ถœ๋ ฅํ•˜๋Š” SQL ๋ฌธ์„ ์ž‘์„ฑ. ๊ฒฐ๊ณผ๋Š” ๊ธธ์ด๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌํ•˜๊ณ , ๊ธธ์ด๊ฐ€ ๊ฐ™๋‹ค๋ฉด ๋ฌผ๊ณ ๊ธฐ์˜ ID์— ๋Œ€ํ•ด ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ.
1
2
3
SELECT ID, LENGTH
FROM FISH_INFO
ORDER BY LENGTH DESC, ID LIMIT 10;



28) ์กฐ๊ฑด์— ๋ถ€ํ•ฉํ•˜๋Š” ์ค‘๊ณ ๊ฑฐ๋ž˜ ๋Œ“๊ธ€ ์กฐํšŒํ•˜๊ธฐ

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

  • ํ‹€๋ ธ๋˜ ๋‹ต์•ˆ

1
2
3
4
SELECT A.TITLE, A.BOARD_ID, B.REPLY_ID, B.WRITER_ID, B.CONTENTS, DATE_FORMAT(B.CREATED_DATE, '%Y-%m-%d') AS CREATED_DATE
FROM USED_GOODS_BOARD A JOIN USED_GOODS_REPLY B ON A.BOARD_ID = B.BOARD_ID
WHERE B.CREATED_DATE LIKE '2022-10%'
ORDER BY B.CREATED_DATE ASC, A.TITLE ASC;
  • ๋ฌธ์ œ๋ฅผ ์ž˜ ์ฝ์–ด๋ณด๋ฉด 2022๋…„ 10์›”์— ์ž‘์„ฑ๋œ ๊ฒŒ์‹œ๊ธ€์˜ ์ œ๋ชฉ ~ ์ด๋ผ๋Š” ๋ง์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— B.CREATED_DATE๊ฐ€ ์•„๋‹ˆ๋ผ A.CREATED_DATE์ด๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ •๋ ฌ์€ ๋Œ“๊ธ€ ์ž‘์„ฑ์ผ์„ ๊ธฐ์ค€์ด๋ฏ€๋กœ B.CREATED_DATE๊ฐ€ ๋งž๋‹ค. ์ €๊ฑฐ๋ฅผ ๋ชป๋ด์„œ ํ•œ์ฐธ์„ ํ‹€๋ฆฐ ๋ฌธ์ œ..

  • ์ˆ˜์ • ํ›„ ๋‹ต์•ˆ

1
2
3
4
5
SELECT A.TITLE, A.BOARD_ID, B.REPLY_ID, B.WRITER_ID, B.CONTENTS, DATE_FORMAT(B.CREATED_DATE, '%Y-%m-%d') AS CREATED_DATE
FROM USED_GOODS_BOARD A 
JOIN USED_GOODS_REPLY B ON A.BOARD_ID = B.BOARD_ID
WHERE A.CREATED_DATE LIKE '2022-10%'
ORDER BY B.CREATED_DATE ASC, A.TITLE ASC;



29) ํŠน์ • ํ˜•์งˆ์„ ๊ฐ€์ง€๋Š” ๋Œ€์žฅ๊ท  ์ฐพ๊ธฐ

  • 2๋ฒˆ ํ˜•์งˆ์ด ๋ณด์œ ํ•˜์ง€ ์•Š์œผ๋ฉด์„œ 1๋ฒˆ์ด๋‚˜ 3๋ฒˆ ํ˜•์งˆ์„ ๋ณด์œ ํ•˜๊ณ  ์žˆ๋Š” ๋Œ€์žฅ๊ท  ๊ฐœ์ฒด์˜ ์ˆ˜(COUNT)๋ฅผ ์ถœ๋ ฅํ•˜๋Š” SQL ๋ฌธ์„ ์ž‘์„ฑ. 1๋ฒˆ๊ณผ 3๋ฒˆ ํ˜•์งˆ์„ ๋ชจ๋‘ ๋ณด์œ ํ•˜๊ณ  ์žˆ๋Š” ๊ฒฝ์šฐ๋„ 1๋ฒˆ์ด๋‚˜ 3๋ฒˆ ํ˜•์งˆ์„ ๋ณด์œ ํ•˜๊ณ  ์žˆ๋Š” ๊ฒฝ์šฐ์— ํฌํ•จํ•จ.
1
2
3
4
5
6
7
SELECT COUNT(ID) AS 'COUNT'
FROM ECOLI_DATA
WHERE GENOTYPE & 2 = 0
    AND (GENOTYPE & 4 = 4 OR GENOTYPE & 1 = 1);
    
# 2: 0010 - ID : 2ํƒˆ๋ฝ
# 4: 0100 - ID 4,  1: 0001 - ID 3
  • 2๋ฅผ ๋น„ํŠธ๋กœ ํ‘œํ˜„ํ•˜๋ฉด : 0010์ž„.

  • GENOTYPE ๊ณผ &(and์—ฐ์‚ฐ)์„ ํ•˜๋ฉด ๋น„๊ตํ•˜๋Š” ๊ฒƒ๊ณผ ์ผ์น˜ํ•˜๋Š” ๊ฒฝ์šฐ์—๋งŒ ํ—ˆ์šฉ๋œ๋‹ค๋Š” ์˜๋ฏธ. GENOTYPE & 2 = 0 ๋Š” 0010๊ณผ ๋น„๊ตํ•ด์„œ 0์ด๋˜๋Š” ๊ฒƒ๋งŒ ํ—ˆ์šฉํ•œ๋‹ค๋Š” ์˜๋ฏธ. ๋”ฐ๋ผ์„œ ID 2๋Š” 1111์ด๋ฏ€๋กœ 1111 & 0010 = 1์ด๋ฏ€๋กœ ์ œ์™ธ๋œ๋‹ค.

  • GENOTYPE & 4์—์„œ 4๋Š” 0100์ด๋ฏ€๋กœ GENOTYPE๊ณผ 0100์„ ๋น„๊ตํ•ด์„œ 0100์˜ ๊ฐ’์ด ํ—ˆ์šฉ๋˜๋Š” ๊ฒƒ์„ ์‚ดํŽด๋ณด๋ฉด ID 4 = 1101 & 0100 = 0100(4) ๋ฏ€๋กœ ID 4๋งŒ ํ—ˆ์šฉ๋œ๋‹ค.

  • GENOTYPE & 1 =1 ์—์„œ 1์€ 0001์ด๋ฏ€๋กœ GENOTYPE๊ณผ 0001์„ ๋น„๊ตํ•ด์„œ 0001์˜ ๊ฐ’์ด ํ—ˆ์šฉ๋˜๋Š” ๊ฒƒ์„ ์‚ดํŽด๋ณด๋ฉด ID 3 = 0001 & 0001 = 0001(1) ์ด๋ฏ€๋กœ ID 1๋งŒ ํ—ˆ์šฉ๋œ๋‹ค.

This post is licensed under CC BY 4.0 by the author.