โ๐ป 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๋ง ํ์ฉ๋๋ค.