๋ฌธ์ ํ์ด ๊ธฐ๊ฐ : 24๋ 12์ 27์ผ ~
์ต์ ์์ผ๋ก ์ ๋ ฌํ ๋ฌธ์ ์์์ ๋๋ค
๋ณดํธ์์์ ์ค์ฑํํ ๋๋ฌผ
SELECT
I.ANIMAL_ID
, I.ANIMAL_TYPE
, I.NAME
FROM ANIMAL_INS AS I
JOIN ANIMAL_OUTS AS O
ON I.ANIMAL_ID = O.ANIMAL_ID
WHERE SEX_UPON_INTAKE REGEXP 'Intact'
AND SEX_UPON_OUTCOME REGEXP 'Spayed|Neutered'
ORDER BY ANIMAL_ID
์ ์ ์๊ฐ ๊ตฌํ๊ธฐ(2)
WITH RECURSIVE CTE_HOUR AS (
SELECT 0 AS HOUR
UNION ALL
SELECT HOUR + 1
FROM CTE_HOUR
WHERE HOUR < 23
)
SELECT
C.HOUR
, COUNT(A.DATETIME) AS COUNT
FROM CTE_HOUR AS C
LEFT JOIN ANIMAL_OUTS AS A
ON C.HOUR = HOUR(A.DATETIME)
GROUP BY HOUR
WITH RECURSIVE
: SQL์์์ ์ฌ๊ท ํด๋ฆฌ ๊ธฐ๋ฒ
- with์ ์ฌ์ฉํด ๊ฐ์์ ์ฟผ๋ฆฌ์ ์ ์ฅ
- ๋ฐ๋์ UNION์ ์ฌ์ฉํด์ผ ํจ
UNION
: ๋ ๊ฐ ์ด์์ ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ๊ฒฐํฉํ ๋ ์ฌ์ฉํ๋ ๋ช ๋ น๋ฌธ
- UNION : ์ค๋ณต๋๋ ๋ ์ฝ๋ ์ ๊ฑฐ
- UNION ALL : ์ค๋ณต๋ ๋ฐ์ดํฐ๋ ํฌํจ
* ์์ UNION ALL ์ฌ์ฉ ์ด์
์ฌ๊ท CTE๋ ์๊ธฐ ์์ ์ ํธ์ถํ์ฌ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ๋ณต์ ์ผ๋ก ์์ฑํจ.
> ์ค๋ณต์ ์ ๊ฑฐํ์ง ์๊ณ ๋ชจ๋ ๋ฐ๋ณต๋ ๊ฒ์ ํฌํจํด์ผ์ง ์ ํํ ์๋ํ๊ธฐ ๋๋ฌธ์
UNION์ด ์๋ UNION ALL์ ์ฌ์ฉํ๋ค
โ๏ธ ํ๋ฆฐ ๋ฌธ์ ํผ๋๋ฐฑ
: COUNT(*)๋ฅผ ์จ์ ์ค๋ฅ ๋ฐ์
COUNT(*)๋ ๋ชจ๋ ํ์ ์นด์ดํธํ๋ฏ๋ก, ANIMAL_OUTS ํ ์ด๋ธ์์ ๋งค์นญ๋์ง ์๋ ๊ฒฝ์ฐ์๋ ๊ทธ ์๊ฐ(HOUR)์ ๋ํด 1๋ก ๊ณ์ฐ
> COUNT(A.DATETIME)๋ A.DATETIME์ด NULL์ด ์๋ ๊ฒฝ์ฐ๋ง ์นด์ดํธ
์ฐ์ ์ ์๊ฑฐํธ๊ฐ ๋ด๊ธด ์ฅ๋ฐ๊ตฌ๋
SELECT
CART_ID
FROM CART_PRODUCTS
WHERE NAME IN ('MILK', 'YOGURT')
GROUP BY CART_ID
HAVING COUNT(DISTINCT(NAME)) >= 2
ORDER BY CART_ID
์ํ๋ถ๋ฅ๋ณ ๊ฐ์ฅ ๋น์ผ ์ํ์ ์ ๋ณด ์กฐํํ๊ธฐ
SELECT
CATEGORY
, PRICE AS MAX_PRICE
, PRODUCT_NAME
FROM (
SELECT *, MAX(PRICE) OVER (PARTITION BY CATEGORY) AS MAX_MONEY
FROM FOOD_PRODUCT
) AS A
WHERE CATEGORY IN ('๊ณผ์', '๊ตญ', '๊น์น', '์์ฉ์ ')
AND PRICE = MAX_MONEY
ORDER BY PRICE DESC
5์ ์ํ๋ค์ ์ด๋งค์ถ ์กฐํํ๊ธฐ
SELECT
P.PRODUCT_ID
, P.PRODUCT_NAME
, SUM(PRICE * AMOUNT) AS TOTAL_SALES
FROM
FOOD_PRODUCT AS P
JOIN FOOD_ORDER AS O
ON P.PRODUCT_ID = O.PRODUCT_ID
WHERE PRODUCE_DATE LIKE ('2022-05%')
GROUP BY 1
ORDER BY TOTAL_SALES DESC, PRODUCT_ID
์์ธ์ ์์นํ ์๋น ๋ชฉ๋ก ์ถ๋ ฅํ๊ธฐ
SELECT
I.REST_ID
, I.REST_NAME
, I.FOOD_TYPE
, I.FAVORITES
, I.ADDRESS
, ROUND(AVG(R.REVIEW_SCORE), 2) AS SCORE
FROM
REST_INFO AS I
JOIN REST_REVIEW AS R
ON I.REST_ID = R.REST_ID
WHERE ADDRESS LIKE '์์ธ%'
GROUP BY 1, 2, 3, 4, 5
ORDER BY SCORE DESC, FAVORITES DESC
๊ทธ๋ฃน๋ณ ์กฐ๊ฑด์ ๋ง๋ ์๋น ๋ชฉ๋ก ์ถ๋ ฅํ๊ธฐ
o
๋ , ์, ์ฑ๋ณ ๋ณ ์ํ ๊ตฌ๋งค ํ์ ์ ๊ตฌํ๊ธฐ
o
์คํ๋ผ์ธ/์จ๋ผ์ธ ํ๋งค ๋ฐ์ดํฐ ํตํฉํ๊ธฐ
o
์ทจ์๋์ง ์์ ์ง๋ฃ ์์ฝ ์กฐํํ๊ธฐ
o
์ฃผ๋ฌธ๋์ด ๋ง์ ์์ด์คํฌ๋ฆผ๋ค ์กฐํํ๊ธฐ
o
์ ์ ๋ณ ์นดํ ๊ณ ๋ฆฌ ๋ณ ๋งค์ถ์ก ์ง๊ณํ๊ธฐ
o
์๋์ฐจ ๋์ฌ ๊ธฐ๋ก ๋ณ ๋์ฌ ๊ธ์ก ๊ตฌํ๊ธฐ
o
ํน์ ๊ธฐ๊ฐ๋์ ๋์ฌ ๊ฐ๋ฅํ ์๋์ฐจ๋ค์ ๋์ฌ๋น์ฉ ๊ตฌํ๊ธฐ
o
FrontEnd ๊ฐ๋ฐ์ ์ฐพ๊ธฐ
o
์ธ์ด๋ณ ๊ฐ๋ฐ์ ๋ถ๋ฅํ๊ธฐ
o
์ฐ๊ฐ ํ๊ฐ์ ์์ ํด๋นํ๋ ํ๊ฐ ๋ฑ๊ธ ๋ฐ ์ฑ๊ณผ๊ธ ์กฐํํ๊ธฐ
o
ํน์ ์ธ๋์ ๋์ฅ๊ท ์ฐพ๊ธฐ
o