โ๐ป programmers Lv3. MySQL ์๋ฃ(24.12.20)
66) ์ค๋ ๊ธฐ๊ฐ ๋ณดํธํ ๋๋ฌผ(1)
1
2
3
4
5
SELECT A.NAME, A.DATETIME
FROM ANIMAL_INS A
LEFT JOIN ANIMAL_OUTS B ON A.ANIMAL_ID = B.ANIMAL_ID
WHERE B.DATETIME IS NULL
ORDER BY A.DATETIME LIMIT 3;
LEFT JOIN์ ์ฌ์ฉํ๋ ์ด์ ๋ INNER JOIN์ ๋ ํ ์ด๋ธ ๋ชจ๋ ์ผ์นํ๋ ๋ ์ฝ๋๋ง์ ๋ฐํํ๊ธฐ ๋๋ฌธ์ ANIMAL_INS์๋ง ์๋ ๋๋ฌผ์ ์ฐพ์ ์ ์๋ค.
์ฌ๊ธฐ์ ANIMAL_OUTS๋ ํฌํจ๋์ง ์์์ผ๋๋ค.
LEFT JOIN์ ANIMAL_INS์ ์๋ ๋ชจ๋ ๋๋ฌผ์ ๋ฐํํ๊ณ , ANIMAL_OUTS์ ๋ฐ์ดํฐ๊ฐ ์๋ ๊ฒฝ์ฐ NULL์ ๋ฐํํ๊ฒ ๋๋ค.
67) ์กฐ๊ฑด๋ณ๋ก ๋ถ๋ฅํ์ฌ ์ฃผ๋ฌธ์ํ ์ถ๋ ฅํ๊ธฐ
1
2
3
4
5
6
7
8
SELECT ORDER_ID, PRODUCT_ID, DATE_FORMAT(OUT_DATE, '%Y-%m-%d') AS OUT_DATE,
CASE
WHEN OUT_DATE <= '2022-05-01' THEN '์ถ๊ณ ์๋ฃ'
WHEN OUT_DATE > '2022-05-01' THEN '์ถ๊ณ ๋๊ธฐ'
ELSE '์ถ๊ณ ๋ฏธ์ '
END '์ถ๊ณ ์ฌ๋ถ'
FROM FOOD_ORDER
ORDER BY ORDER_ID ASC;
๋ ์ง ํ์์ DATE_FORMAT
์ผ๋ก ๋ฐ๊ฟ์ ์ถ๋ ฅ
์กฐ๊ฑด๋ฌธ CASE WHEN ELSE END
๊ธฐ์ตํ๊ธฐ
68) ์์๋๋ฐ์ ์์์ต๋๋ค
1
2
3
4
5
SELECT A.ANIMAL_ID, B.NAME
FROM ANIMAL_INS A
JOIN ANIMAL_OUTS B ON A.ANIMAL_ID = B.ANIMAL_ID
WHERE A.DATETIME > B.DATETIME
ORDER BY A.DATETIME;
69) ์ค๋ ๊ธฐ๊ฐ ๋ณดํธํ ๋๋ฌผ(2)
1
2
3
4
5
SELECT A.ANIMAL_ID, B.NAME
FROM ANIMAL_INS A
JOIN ANIMAL_OUTS B ON A.ANIMAL_ID = B.ANIMAL_ID
ORDER BY DATEDIFF(B.DATETIME, A.DATETIME) DESC
LIMIT 2;
ORDER BY DATEDIFF(B.DATETIME, A.DATETIME) DESC
๋ B.DATETIME
๊ณผ A.DATETIME
์ ์ผ ์๋ฅผ ๊ณ์ฐํด์ ๋ ์ง ์ฐจ์ด๊ฐ ํฐ ์๋ถํฐ ์ ๋ ฌ
70) ๋์ฌ ๊ธฐ๋ก์ด ์กด์ฌํ๋ ์๋์ฐจ ๋ฆฌ์คํธ ๊ตฌํ๊ธฐ
1
2
3
4
5
6
SELECT DISTINCT A.CAR_ID
FROM CAR_RENTAL_COMPANY_CAR A
JOIN CAR_RENTAL_COMPANY_RENTAL_HISTORY B ON A.CAR_ID = B.CAR_ID
WHERE A.CAR_TYPE LIKE '์ธ๋จ' AND
MONTH(B.START_DATE) = '10'
ORDER BY A.CAR_ID DESC;
์ค๋ณต์ด ์์ด์ผ ๋๋ฉด : DISTINCT
71) ์กฐ๊ฑด์ ๋ง๋ ์ฌ์ฉ์์ ์ด ๊ฑฐ๋๊ธ์ก ์กฐํํ๊ธฐ
1
2
3
4
5
6
7
8
SELECT B.USER_ID, B.NICKNAME, SUM(A.PRICE) AS 'TOTAL_SALES'
FROM USED_GOODS_BOARD A
JOIN USED_GOODS_USER B
ON A.WRITER_ID = B.USER_ID
WHERE A.STATUS = 'DONE'
GROUP BY B.USER_ID
HAVING TOTAL_SALES >= 700000
ORDER BY TOTAL_SALES;
๋จผ์ ์ง๊ณํจ์๋ SELECT
๋ฌธ์์ ์ธ ์ ์๋ค. ์ด ํจ์๋ ๊ทธ๋ฃนํ๋ ๊ฒฐ๊ณผ์ ๋ํด ์ ์ฉํด์ผ ํ๋ค.
TOTAL_SALES >= 700000
ํด๋น ์กฐ๊ฑด์ HAVING
์ ์์๋ง ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค.
WHERE
์ ์ ๊ทธ๋ฃนํ ์ด์ ์ ๋ฐ์ดํฐ์ ์กฐ๊ฑด์ ์ ์ฉํ๊ณ , HAVING
์ ๊ทธ๋ฃนํ๋ ํ์ ์กฐ๊ฑด์ ์ ์ฉํ๋ ์ฐจ์ด์ ์ด ์๋ค.
72) ์ฆ๊ฒจ์ฐพ๊ธฐ๊ฐ ๊ฐ์ฅ ๋ง์ ์๋น ์ ๋ณด ์ถ๋ ฅํ๊ธฐ
1
2
3
4
5
6
7
8
SELECT FOOD_TYPE, REST_ID, REST_NAME, FAVORITES
FROM REST_INFO
WHERE (FOOD_TYPE, FAVORITES) IN(
SELECT FOOD_TYPE, MAX(FAVORITES)
FROM REST_INFO
GROUP BY FOOD_TYPE
)
ORDER BY FOOD_TYPE DESC;
์ฌ๊ธฐ์ ์ฒ์์๋
1
2
3
4
SELECT FOOD_TYPE, REST_ID, REST_NAME, MAX(FAVORITES)
FROM REST_INFO
GROUP BY FOOD_TYPE
ORDER BY FOOD_TYPE DESC;
๋ค์๊ณผ ๊ฐ์ด ํ์์๋๋ฐ ์ด๊ฒ ์ฑ๋ฆฝ๋์ง ์๋ ์ด์ ๋ SELECT
๋ฌธ์์ ๋จ์ํ MAX(FAVORITES)
๋ฅผ ์ํํ๋ฉด ์์ ์ข
๋ฅ๋ณ ๊ฐ์ฅ ๋ง์ ์ฆ๊ฒจ์ฐพ๊ธฐ ์๋ง์ ๊ตฌํ๋ ๊ฒ์ด๊ณ ๊ฐ์ฅ ๋ง์ ์ฆ๊ฒจ์ฐพ๊ธฐ ์์ ์๋น ์ ๋ณด๋ฅผ ๊ตฌํด์ฃผ๋ ๊ฒ์ ์๋๋ค.
๋ฐ๋ผ์ ์๋ธ ์ฟผ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ ์์ ์ข ๋ฅ๋ณ ๊ฐ์ฅ ํฐ ์ฆ๊ฒจ์ฐพ๊ธฐ ์๋ฅผ ๊ตฌํ๊ณ GROUP BY๋ฅผ ํตํด ์์ ์ข ๋ฅ๋ณ๋ก ์ข์์ ์๊ฐ ์ ์๋ธ ์ฟผ๋ฆฌ์์ ๊ตฌํ ๊ฐ์ฅ ํฐ ๊ฐ์ ์ฆ๊ฒจ์ฐพ๊ธฐ ์์ ์ผ์นํ๋ ํ์ ์ ๋ณด๋ฅผ ์ถ๋ ฅํ๋ค.
73) ์กฐ๊ฑด์ ๋ง๋ ์ฌ์ฉ์ ์ ๋ณด ์กฐํํ๊ธฐ
1
2
3
4
5
6
SELECT B.USER_ID, B.NICKNAME, CONCAT(B.CITY, ' ', B.STREET_ADDRESS1,' ', B.STREET_ADDRESS2) AS '์ ์ฒด์ฃผ์', CONCAT(SUBSTR(B.TLNO, 1,3), '-', SUBSTR(B.TLNO,4,4), '-',(SUBSTR(B.TLNO,8,4))) AS '์ ํ๋ฒํธ'
FROM USED_GOODS_BOARD A
JOIN USED_GOODS_USER B ON A.WRITER_ID = B.USER_ID
GROUP BY A.WRITER_ID
HAVING COUNT(A.WRITER_ID) >= 3
ORDER BY B.USER_ID DESC;
CONCAT
: ์ฌ๋ฌ ๋ฌธ์์ด์ ํ๋๋ก ํฉ์น ๋ ์ฌ์ฉ
- CONnect (์ฐ๊ฒฐ) + cat = ๊ณ ์์ด๊ฐ ๊ท์ฝ๊ฒ ์ฐ๊ฒฐ๋์ด์๋ ๊ฑฐ ์๊ฐ ๐ธ
SUBSTR(A, 1, 4)
: A ๋ฌธ์์ด์ 1๋ฒ ์๋ฆฌ๋ถํฐ 4๊ธ์ ์๋ฆ
74) ๋ถ์๋ณ ํ๊ท ์ฐ๋ด ์กฐํํ๊ธฐ
1
2
3
4
5
SELECT A.DEPT_ID, A.DEPT_NAME_EN, ROUND(AVG(SAL), 0) AS 'AVG_SAL'
FROM HR_DEPARTMENT A
JOIN HR_EMPLOYEES B ON A.DEPT_ID = B.DEPT_ID
GROUP BY A.DEPT_ID
ORDER BY AVG_SAL DESC
- ์์์ ์ฒซ์งธ ์๋ฆฌ์์ ๋ฐ์ฌ๋ฆผ : ROUND(AVG(SAL), 0) -> ์ฒซ์งธ ์๋ฆฌ๋ฉด 1์ด ์๋๋ผ 0์.
75) ๋์ฅ๊ท ์ ํฌ๊ธฐ์ ๋ฐ๋ผ ๋ถ๋ฅํ๊ธฐ 1
1
2
3
4
5
6
7
8
SELECT ID,
CASE
WHEN SIZE_OF_COLONY <= 100 THEN 'LOW'
WHEN SIZE_OF_COLONY <= 1000 THEN 'MEDIUM'
WHEN SIZE_OF_COLONY > 1000 THEN 'HIGH'
END
AS 'SIZE'
FROM ECOLI_DATA
CASE
WHEN
์กฐ๊ฑดTHEN
โ๋ฐํ ๊ฐโEND
76) ์๋์ฐจ ๋์ฌ ๊ธฐ๋ก์์ ๋์ฌ์ค / ๋์ฌ ๊ฐ๋ฅ ์ฌ๋ถ ๊ตฌ๋ถํ๊ธฐ
1
2
3
4
5
6
7
8
9
SELECT CAR_ID,
MAX(CASE
WHEN '2022-10-16' BETWEEN START_DATE AND END_DATE THEN '๋์ฌ์ค'
ELSE '๋์ฌ ๊ฐ๋ฅ'
END)
AS 'AVAILABILITY'
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
GROUP BY CAR_ID
ORDER BY CAR_ID DESC;
- MAX ํจ์๋ฅผ ํ๋ ์ด์ ๋ CAR_ID๊ฐ ๊ฐ์ ์ฐจ์ ๊ฒฝ์ฐ ์ฌ๋ฌ ๋ฒ ๋์ฌํ ์ ๋ณด๋ฅผ ๋ํ๋ด๊ธฐ ๋๋ฌธ์ ๊ฐ์ฅ ์ต์ ๋ ์ง ๋ฐ์ดํฐ๋ฅผ ์กฐํํด์ผ ํ๊ธฐ ๋๋ฌธ์ด๋ค.
77) ์กฐํ์๊ฐ ๊ฐ์ฅ ๋ง์ ์ค๊ณ ๊ฑฐ๋ ๊ฒ์ํ์ ์ฒจ๋ถํ์ผ ์กฐํํ๊ธฐ
1
2
3
4
5
SELECT CONCAT('/home/grep/src/', A.BOARD_ID, '/', B.FILE_ID ,B.FILE_NAME,B.FILE_EXT) AS 'FILE_PATH'
FROM USED_GOODS_BOARD A
JOIN USED_GOODS_FILE B ON A.BOARD_ID = B.BOARD_ID
WHERE VIEWS = (SELECT MAX(VIEWS) FROM USED_GOODS_BOARD )
ORDER BY B.FILE_ID DESC;
USED_GOODS_BOARD
์USED_GOODS_FILE
ํ ์ด๋ธ์ด๋ฏ๋กJOIN
์ผ๋ก ๋ฌถ๊ธฐ์กฐํ์๊ฐ ๊ฐ์ฅ ๋์ ์ค๊ณ ๊ฑฐ๋ ๊ฒ์๊ธ ๊ตฌํ๊ธฐ
์ฒจ๋ถํ์ผ ๊ฒฝ๋ก๋
FILE ID
๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌํ์ผ๊ฒฝ๋ก
CONCAT
์ด์ฉํด์ ์ฐ๊ฒฐํ๊ธฐ
์๋ธ์ฟผ๋ฆฌ(Subquery)๋ ํ๋์ SQL ์ฟผ๋ฆฌ ๋ด๋ถ์์ ํ์ ์ฟผ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ผ๋ก, ํน์ ์กฐ๊ฑด์ด๋ ๋ฐ์ดํฐ๋ฅผ ๊ณ์ฐํ๊ณ ์ด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ฃผ ์ฟผ๋ฆฌ(Main Query)๋ฅผ ์ํํ ๋ ์ฌ์ฉ๋๋ค.
78) ํค๋น ์ ์ ๊ฐ ์์ ํ ์ฅ์
1
2
3
4
SELECT ID, NAME, HOST_ID
FROM PLACES
WHERE HOST_ID IN (SELECT HOST_ID FROM PLACES GROUP BY HOST_ID HAVING COUNT(HOST_ID) >=2)
ORDER BY ID;
- ๋ ์ด์์ธ ํค๋น์ ์ ๋ค์ ๋ฆฌ์คํธ๋ฅผ ์ถ๋ ฅํด์ผ ํจ. ์๋ธ ์ฟผ๋ฆฌ ์ฌ์ฉํ์ฌ ์ฝ๋ ์์ฑ
1
2
3
4
5
SELECT *
FROM PLACES
GROUP BY HOST_ID
HAVING COUNT(*) >= 2
ORDER BY ID
์ด์ ๊ฐ์ ์ฝ๋๊ฐ ์ ๋๋ ์ด์ ๋ HOST_ID๊ฐ 2๊ฑด ์ด์์ธ ํค๋น ์ ์ ๋ค์ ์ ์ฒด ๋ฆฌ์คํธ๊ฐ ์ถ๋ ฅ๋์ด์ผ ํ๋ค.
์ด์ ๊ฒฐ๊ณผ๋ ํค๋น ์ ์ ์ ๊ฐ์ HOST_ID์ ํ์ด ํ๊ฐ์ฉ๋ง ์ถ๋ ฅ๋จ.
79) ๋์ฌ ํ์๊ฐ ๋ง์ ์๋์ฐจ๋ค์ ์๋ณ ๋์ฌ ํ์ ๊ตฌํ๊ธฐ
๋์ฌ ์์์ผ์ ๊ธฐ์ค์ผ๋ก 2022๋
8์๋ถํฐ 2022๋
10์๊น์ง ์ด ๋์ฌ ํ์๊ฐ 5ํ ์ด์์ธ ์๋์ฐจ๋ค์ ๋ํด์ ํด๋น ๊ธฐ๊ฐ ๋์์ ์๋ณ ์๋์ฐจ ID ๋ณ ์ด ๋์ฌ ํ์(์ปฌ๋ผ๋ช
: RECORDS
) ๋ฆฌ์คํธ : ์๋ธ ์ฟผ๋ฆฌ ์ฌ์ฉ, ์๋์ฐจ ID ๋ณ์ด๋ฏ๋ก SELECT CAR_ID
, ๊ฐ์ CAR_RENTAL_COMPANY_RENTAL_HISTORY
ํ
์ด๋ธ ์ด๋ฏ๋ก FROM
CAR_RENTAL_COMPANY_RENTAL_HISTORY
, ๋์ฌ ์์์ผ์ ๊ธฐ์ค์ผ๋ก 2022๋
8์
๋ถํฐ 2022๋
10์
๊น์ง์ด๋ฏ๋ก WHERE START_DATE BETWEEN '2022-08-01' AND '2022-10-31'
, ๋์ฌํ์ 5ํ ์ด์ -> HAVING COUNT(CAR_ID) >= 5
1
2
3
4
5
6
7
8
9
10
11
12
13
SELECT MONTH(START_DATE) AS 'MONTH', CAR_ID, COUNT(*) AS 'RECORDS'
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
WHERE START_DATE BETWEEN '2022-08-01' AND '2022-10-31'
AND CAR_ID IN (
SELECT CAR_ID
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
WHERE START_DATE BETWEEN '2022-08-01' AND '2022-10-31'
GROUP BY CAR_ID
HAVING COUNT(CAR_ID) >= 5
)
GROUP BY MONTH, CAR_ID
HAVING RECORDS > 0
ORDER BY MONTH, CAR_ID DESC;
80) ํน์ ์กฐ๊ฑด์ ๋ง์กฑํ๋ ๋ฌผ๊ณ ๊ธฐ๋ณ ์์ ์ต๋ ๊ธธ์ด ๊ตฌํ๊ธฐ
1) ํ๊ท ๊ธธ์ด๊ฐ 33cm
์ด์์ด ๋ฌผ๊ณ ๊ธฐ๋ค์ ์ข
๋ฅ๋ณ๋ก ๋ถ๋ฅ ํ๋ฏ๋ก AVG(LENGTH) >= 33
, ๋จ 10cm
์ดํ์ ๋ฌผ๊ณ ๊ธฐ๋ค์ 10cm
๋ก ์ทจ๊ธ -> AVG(IFNULL(LENGTH,10)) >= 33
1
2
3
4
5
SELECT COUNT(FISH_TYPE) AS 'FISH_COUNT', MAX(IFNULL(LENGTH, 10)) AS 'MAX_LENGTH', FISH_TYPE
FROM FISH_INFO
GROUP BY FISH_TYPE
HAVING AVG(IFNULL(LENGTH,10)) >= 33
ORDER BY FISH_TYPE
81) ์ ๊ทธ๋ ์ด๋ ํ ์ ์๋ ์์ดํ ๊ตฌํ๊ธฐ
1
2
3
4
5
6
7
8
9
10
SELECT A.ITEM_ID, A.ITEM_NAME, A.RARITY
FROM ITEM_INFO A
LEFT JOIN ITEM_TREE B ON A.ITEM_ID = B.PARENT_ITEM_ID
WHERE B.PARENT_ITEM_ID IS NULL
ORDER BY A.ITEM_ID DESC;
# E,D,C๋ ๋ค๋ฅธ ์์ดํ
์ ๋ถ๋ชจ ์ญํ ์ ํ์ง ์๋๋ค.
# ITEM ID = 0์ ๋ถ๋ชจ๊ฐ ์์ผ๋ฏ๋ก ๊ฐ์ฅ ์์ ๋ ๋ฒจ ์์ดํ
# ITEM ID = 1, 2๋ ๋ถ๋ชจ๊ฐ 0 ์ด๋ฏ๋ก ITEM_A์ ์์
# ITEM_ID = 3, 4๋ ๋ถ๋ชจ๊ฐ 1 ์ด๋ฏ๋ก ITEMP_B์ ์์
์ฆ, WHERE B.PARENT_ITEM_ID IS NULL
์ด ๋ง์ ITEM_C, D, E
๋ ๋ค๋ฅธ ์์ดํ
์ ๋ถ๋ชจ ์ญํ ์ ํ์ง ์๋ ๊ฒ์ ์๋ฏธํ๋ค.
82) ๋์ฅ๊ท ๋ค์ ์์์ ์ ๊ตฌํ๊ธฐ
1
2
3
4
5
SELECT A.ID, COUNT(B.ID) AS 'CHILD_COUNT'
FROM ECOLI_DATA A
LEFT JOIN ECOLI_DATA B ON A.ID = B.PARENT_ID
GROUP BY A.ID
ORDER BY A.ID;
ON A.ID = B.PARENT_ID
:
- ์ด ์กฐ๊ฑด์
A.ID
์B.PARENT_ID
๊ฐ ์ผ์นํ๋ ํ์ ์ฐพ์์ ๊ฒฐํฉํ๋ ๊ฒ.
ID | PARENT_ID | SIZE_OF_COLONY | DIFFERENTIATION_DATE | GENOTYPE |
---|---|---|---|---|
1 | NULL | 10 | 2019/01/01 | 5 |
2 | NULL | 2 | 2019/01/01 | 3 |
3 | 1 | 100 | 2020/01/01 | 4 |
4 | 2 | 17 | 2020/01/01 | 4 |
5 | 2 | 10 | 2020/01/01 | 6 |
6 | 4 | 101 | 2021/01/01 | 22 |
์๋ ์์ํ์ด๊ณ A.ID
์ B.PARENT_ID
๋ฅผ ๊ฒฐํฉํ๋ฉด
A.ID | B.ID (์์) | CHILD_COUNT |
---|---|---|
1 | 3 | 1 |
2 | 4, 5 | 2 |
3 | NULL | 0 |
4 | 6 | 1 |
5 | NULL | 0 |
6 | NULL | 0 |
๋ค์๊ณผ ๊ฐ์ด ๋๋ค.
83) ๋ฌผ๊ณ ๊ธฐ ์ข ๋ฅ ๋ณ ๋์ด ์ฐพ๊ธฐ
1
2
3
4
5
6
7
8
9
SELECT A.ID, B.FISH_NAME, A.LENGTH
FROM FISH_INFO A
JOIN FISH_NAME_INFO B ON A.FISH_TYPE = B.FISH_TYPE
WHERE A.LENGTH IN(
SELECT MAX(LENGTH)
FROM FISH_INFO
WHERE FISH_TYPE = A.FISH_TYPE
)
ORDER BY A.ID;
์๋ธ์ฟผ๋ฆฌ๋ FISH_INFO
ํ
์ด๋ธ์์ FISH_TYPE
์ด A.FISH_TYPE
๊ณผ ๋์ผํ ๋ฌผ๊ณ ๊ธฐ๋ค ์ค์์ ๊ฐ์ฅ ํฐ LENGTH
๊ฐ์ ์ฐพ์.
84) ๋์ฅ๊ท ์ ํฌ๊ธฐ์ ๋ฐ๋ผ ๋ถ๋ฅํ๊ธฐ 2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
SELECT A.ID,
CASE
WHEN A.PER <= 0.25 THEN 'CRITICAL'
WHEN A.PER <= 0.5 THEN 'HIGH'
WHEN A.PER <= 0.75 THEN 'MEDIUM'
ELSE 'LOW'
END
AS 'COLONY_NAME'
FROM (
SELECT ID,
PERCENT_RANK() OVER (ORDER BY SIZE_OF_COLONY DESC) AS 'PER'
FROM ECOLI_DATA
) AS A
ORDER BY ID;
PERCENT_RANK()
ํจ์๋ ๊ฐ ํ์ ๋ํด ์ฃผ์ด์ง ์ปฌ๋ผ(์ฌ๊ธฐ์๋SIZE_OF_COLONY
)์ ๊ธฐ์ค์ผ๋ก ๋ฐฑ๋ถ์ ๋ญํฌ๋ฅผ ๊ณ์ฐ.ORDER BY SIZE_OF_COLONY DESC
๋SIZE_OF_COLONY
๊ฐ์ ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ ฌํ์ฌ ํฐ ๊ฐ์ผ์๋ก ๋์ ๋ฐฑ๋ถ์ ๋ญํฌ๋ฅผ ๋ถ์ฌํ๋ค.์๋ฅผ ๋ค์ด,
SIZE_OF_COLONY
๊ฐ์ด ๊ฐ์ฅ ํฐ ํ์PER
๊ฐ์ด 1์ ๊ฐ๊น์ด ๊ฐ์ ๊ฐ์ง๋ฉฐ, ๊ฐ์ฅ ์์ ๊ฐ์ 0์ ๊ฐ๊น์ด ๊ฐ์ ๊ฐ์ง๋ค.์๋ธ์ฟผ๋ฆฌ๋ ๊ฐ
ID
์ ๊ทธ์ ๋์ํ๋ ๋ฐฑ๋ถ์ ๋ญํฌ(PER
) ๊ฐ์ ๋ฐํํ๋ค.