โ๏ธ Programmers MySQL ์ ๋ต๋ฅ 75~79% ์ ์ฒด ํ์ด
1๏ธโฃ 12์ธ ์ดํ์ธ ์ฌ์ ํ์ ๋ชฉ๋ก ์ถ๋ ฅํ๊ธฐ (https://school.programmers.co.kr/learn/courses/30/lessons/132201)
SELECT PT_NAME, PT_NO, GEND_CD, AGE, IF(TLNO IS NULL, "NONE", TLNO)
FROM PATIENT
WHERE GEND_CD = "W"
AND AGE <= 12
ORDER BY AGE DESC, PT_NO ASC;
2๏ธโฃ ์นดํ ๊ณ ๋ฆฌ ๋ณ ์ํ ๊ฐ์ ๊ตฌํ๊ธฐ (https://school.programmers.co.kr/learn/courses/30/lessons/131529)
SELECT left(PRODUCT_CODE, 2) AS CATEGORY, COUNT(PRODUCT_ID)
FROM PRODUCT
GROUP BY left(PRODUCT_CODE, 2); # ๋ฌธ์์ด ์ผ๋ถ๋ฅผ ๊ฐ์ง๊ณ ๊ทธ๋ฃนํ
# MySQL ๋ฌธ์ ์๋ฅด๊ธฐ
# (1) ์ผ์ชฝ์์ ๋ฌธ์์ด ์๋ฅด๊ธฐ (1~N)
SELECT left("[์ปฌ๋ผ๋ช
or ์๋ฅผ ๋ฌธ์์ด]", [๋ง์ง๋ง ์์น]);
#์์
SELECT left("haapy", 3); # ์ถ๋ ฅ : hap
# (2) ์ค๊ฐ์์ ๋ฌธ์์ด ์๋ฅด๊ธฐ (N~M)
SELECT substring("[์ปฌ๋ผ๋ช
or ์๋ฅผ ๋ฌธ์์ด]", [์์ ์์น] ,[๋ง์ง๋ง ์์น]);
#์์
SELECT substring("haapy", 2, 4); # ์ถ๋ ฅ : aap
# (3) ์ค๋ฅธ์ชฝ์์ ๋ฌธ์์ด ์๋ฅด๊ธฐ (1~N)
SELECT right("[์ปฌ๋ผ๋ช
or ์๋ฅผ ๋ฌธ์์ด]", [๋ง์ง๋ง ์์น]);
#์์
SELECT right("haapy", 3); # ์ถ๋ ฅ : apy
# (4) ๊ตฌ๋ถ์
SELECT SUBSTRING_INDEX("[์ปฌ๋ผ๋ช
or ์๋ฅผ ๋ฌธ์์ด]", "[๊ตฌ๋ถ์]", [์ถ๋ ฅ ๋ฒ์])
#์์
SELECT SUBSTRING_INDEX('www.young.com', '.', 2); # ์ถ๋ ฅ : www.young
SELECT SUBSTRING_INDEX('www.chongmoa.com', '.', -2); # ์ถ๋ ฅ : young.com
SELECT SUBSTRING_INDEX('admin@young.com', '@', -1) #์ถ๋ ฅ : young.com
SELECT SUBSTRING_INDEX('admin@young.com', '@', 1) # ์ถ๋ ฅ : admin
3๏ธโฃ ์์ด์ง ๊ธฐ๋ก ์ฐพ๊ธฐ (https://school.programmers.co.kr/learn/courses/30/lessons/59042)
# ๋ฐฉ๋ฒ (1) : (๋ดํ์ด) join ๊ณผ is null ์ ์ด์ฉ (-> Anti-join)
SELECT O.ANIMAL_ID, O.NAME
FROM ANIMAL_INS AS I
RIGHT JOIN ANIMAL_OUTS AS O
USING (ANIMAL_ID)
WHERE I.ANIMAL_ID IS NULL
ORDER BY O.ANIMAL_ID;
# ๋ฐฉ๋ฒ (2) : not in ์ ์ด์ฉ (join ์์ด ํด๊ฒฐ)
SELECT ANIMAL_ID, NAME
FROM ANIMAL_OUTS
WHERE ANIMAL_ID NOT IN (
SELECT ANIMAL_ID
FROM ANIMAL_INS
)
ORDER BY ANIMAL_ID;
# ๋ฐฉ๋ฒ (3) : not exists ์ ์ด์ฉ (join ์์ด ํด๊ฒฐ)
SELECT ANIMAL_ID, NAME
FROM ANIMAL_OUTS
WHERE NOT EXISTS (
SELECT NULL
FROM ANIMAL_INS
WHERE ANIMAL_INS.ANIMAL_ID = ANIMAL_OUTS.ANIMAL_ID
)
ORDER BY ANIMAL_ID;
๐ค JOIN vs NOT IN vs NOT EXISTS ? โก๏ธ JOIN ์ด๋ NOT IN ๋ณด๋ค NOT EXISTS ๊ฐ ์ผ๋ฐ์ ์ผ๋ก 30% ํจ์จ์ด ๋ฎ์
์ฐธ๊ณ :
โ https://juneyr.dev/anti-join#not-in
MySQL ์์ ์ฐจ์งํฉ : Anti-join ์ ์ธ๊ฐ์ง ๋ฐฉ๋ฒ
…
juneyr.dev
โก https://explainextended.com/2009/09/18/not-in-vs-not-exists-vs-left-join-is-null-mysql/
NOT IN vs. NOT EXISTS vs. LEFT JOIN / IS NULL: MySQL
A comparison of three methods to fetch rows present in one table but absent in another one, namely NOT IN, NOT EXISTS and LEFT JOIN / IS NULL. This article compares efficiency of these methods in MySQL.
explainextended.com
4๏ธโฃ ์ํ ๋ณ ์คํ๋ผ์ธ ๋งค์ถ ๊ตฌํ๊ธฐ
SELECT P.PRODUCT_CODE, (SUM(SALES_AMOUNT) * P.PRICE) AS SALES
FROM PRODUCT AS P
LEFT JOIN OFFLINE_SALE AS O
ON P.PRODUCT_ID = O.PRODUCT_ID
GROUP BY P.PRODUCT_ID
ORDER BY SALES DESC, PRODUCT_CODE ASC;'SQL ๐ฌ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| (Programmers) SQL ํ์ด (7) (1) | 2022.10.25 |
|---|---|
| (Programmers) SQL ํ์ด (6) (0) | 2022.10.24 |
| (Programmers) SQL ํ์ด (4) (0) | 2022.10.21 |
| (Programmers) SQL ํ์ด (3) (0) | 2022.10.20 |
| (Programmers) SQL ํ์ด (2) (0) | 2022.10.17 |