LeetCode ๋ผ๋ ์ฌ์ดํธ๊ฐ ์์ต๋๋ค.
https://leetcode.com/problemset/all/
์ฌ๋ฌ๊ฐ์ง ์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ๋ถํฐ ํ์ต ๋ฐ ์ธํฐ๋ทฐ๊น์ง ์ฌ๋ฌ ํ๋ก๊ทธ๋๋ฐ ๊ณต๋ถ๋ฅผ ํ ์ ์๋ ์ฌ์ดํธ์ ๋๋ค.
์ฌ๊ธฐ์ ์ ๋ SQL Study Plan
์ ๋งค์ผ ํ๋ฒ ํด๋ณผ๊น ํฉ๋๋ค.
๊ทธ๋ผ 1์ผ์ฐจ ์์ํด๋ณด๊ฒ ์ต๋๋ค.
https://leetcode.com/problems/big-countries/?envType=study-plan&id=sql-i
๋ฌธ์ ์์๋ ๋ฉด์ ์ด 3000000km2 ์ด์์ด๊ฑฐ๋ ์ธ๊ตฌ์๊ฐ 25000000๋ช
์ด์์ธ ๋๋ผ๋ฅผ big countries
๋ก ์ ์ํฉ๋๋ค.
์ด๋ big countries
๋ฅผ ์ฐพ์์ ์๋์ ๊ฐ์ด ์ถ๋ ฅํ๋ ๋ฌธ์ ์
๋๋ค.
SELECT
name, population, area
FROM
World
WHERE
area >= 3000000 OR population >= 25000000
;
WHERE
์ ์ ๋ฌธ์ ์์ ์ฃผ์ด์ง ์กฐ๊ฑด์ ๋ฃ์ด์ ์ด๋ ต์ง ์๊ฒ ํ์์ต๋๋ค.
https://leetcode.com/problems/recyclable-and-low-fat-products/?envType=study-plan&id=sql-i
๋ฌธ์ ์ ์กฐ๊ฑด์ low fat
์ด๋ฉด์ recyclable
ํ ๋ฐ์ดํฐ๋ฅผ ์๋์ ๊ฐ์ด ๋ฝ์๋ด๋ผ๋ ๊ฒ์
๋๋ค.
SELECT
product_id
FROM
Products
WHERE
low_fats = 'Y' AND recyclable = 'Y'
;
๊ฐ๋จํ WHERE
์ ์ ์กฐ๊ฑด์ ๋ ๋ค ๋ฃ์ด์ฃผ์ด์ ํ์์ต๋๋ค.
https://leetcode.com/problems/find-customer-referee/?envType=study-plan&id=sql-i
์๋์ ๊ฐ์ด referee_id
๊ฐ 2๊ฐ ์๋ ์ฌ๋์ ์ด๋ฆ๋ง ์ถ๋ ฅํ๋ ๋ฌธ์ ์
๋๋ค.
SELECT
name
FROM
Customer
WHERE referee_id != 2 OR referee_id IS NULL
;
WHERE
์ ์ referee_id
๊ฐ 2๊ฐ ์๋๋ฉด์ NULL
๊ฐ๋ ํฌํจํ๊ฒ๋ ์กฐ๊ฑด์ ์ถ๊ฐํ์ฌ ๋ฌธ์ ๋ฅผ ํ์์ต๋๋ค.
https://leetcode.com/problems/customers-who-never-order/?envType=study-plan&id=sql-i
Orders
ํ
์ด๋ธ์ customerId
๋ Customers
ํ
์ด๋ธ์ foregin key
์
๋๋ค.
์ด๋ ์ฃผ๋ฌธํ์ง ์์(Orders
ํ
์ด๋ธ์ customerId
์ ๊ฐ์ด ์กด์ฌํ์ง ์๋) ์ฌ๋์ ์ถ๋ ฅํ๋ ๋ฌธ์ ์
๋๋ค.
SELECT
name AS "Customers"
FROM
Customers AS C
LEFT OUTER JOIN Orders AS O
ON C.id = O.customerId
WHERE O.customerId IS NULL
;
Customers
ํ
์ด๋ธ๊ณผ Orders
ํ
์ด๋ธ์ ์์๋๋ก LEFT OUTER JOIN
ํ์ฌ ์ด๋ ์ฃผ๋ฌธํ์ง ์์ ์ฌ๋์ ์ถ์ถํด์ผ ํ๊ธฐ ๋๋ฌธ์, JOIN
ํ ํ
์ด๋ธ์ customerId
๊ฐ NULL
๊ฐ์ธ ๋ฐ์ดํฐ๋ฅผ ์ถ์ถํ์ฌ ํ์์ต๋๋ค.
์ด์์ผ๋ก 1์ผ์ฐจ ๊ณต๋ถ๋ฅผ ๊ฐ๋จํ ๋ง์ณ๋ณด์์ต๋๋ค.
๋ด์ผ์ 2์ผ์ฐจ๋ฅผ ํ๋ฒ ํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
๊ฐ์ฌํฉ๋๋ค.