1) ๋ฌธ์ ์ค๋ช
- ๋์์ฑ์์ ์ฌ์ฉํ๋ FISH_INFO ํ ์ด๋ธ์ ์ก์ ๋ฌผ๊ณ ๊ธฐ๋ค์ ์ ๋ณด๋ฅผ ๋ด๊ณ ์์ต๋๋ค.
- FISH_INFO ํ ์ด๋ธ์ ๊ตฌ์กฐ๋ ๋ค์๊ณผ ๊ฐ์ผ๋ฉฐ ID, FISH_TYPE, LENGTH, TIME์ ๊ฐ๊ฐ ์ก์ ๋ฌผ๊ณ ๊ธฐ์ ID, ๋ฌผ๊ณ ๊ธฐ์ ์ข ๋ฅ(์ซ์), ์ก์ ๋ฌผ๊ณ ๊ธฐ์ ๊ธธ์ด(cm), ๋ฌผ๊ณ ๊ธฐ๋ฅผ ์ก์ ๋ ์ง๋ฅผ ๋ํ๋ ๋๋ค.
Column name | Type | Nullable |
ID | INTEGER | FALSE |
FISH_TYPE | INTEGER | FALSE |
LENGTH | FLOAT | TRUE |
TIME | DATE | FALSE |
- ๋จ, ์ก์ ๋ฌผ๊ณ ๊ธฐ์ ๊ธธ์ด๊ฐ 10cm ์ดํ์ผ ๊ฒฝ์ฐ์๋ LENGTH ๊ฐ NULL ์ด๋ฉฐ, LENGTH ์ NULL ๋ง ์๋ ๊ฒฝ์ฐ๋ ์์ต๋๋ค.
- FISH_NAME_INFO ํ ์ด๋ธ์ ๋ฌผ๊ณ ๊ธฐ์ ์ด๋ฆ์ ๋ํ ์ ๋ณด๋ฅผ ๋ด๊ณ ์์ต๋๋ค.
- FISH_NAME_INFO ํ ์ด๋ธ์ ๊ตฌ์กฐ๋ ๋ค์๊ณผ ๊ฐ์ผ๋ฉฐ, FISH_TYPE, FISH_NAME ์ ๊ฐ๊ฐ ๋ฌผ๊ณ ๊ธฐ์ ์ข ๋ฅ(์ซ์), ๋ฌผ๊ณ ๊ธฐ์ ์ด๋ฆ(๋ฌธ์) ์ ๋๋ค.
Column name | Type | Nullable |
FISH_TYPE | INTEGER | FALSE |
FISH_NAME | VARCHAR | FALSE |
2) ๋ฌธ์
- ๋ฌผ๊ณ ๊ธฐ ์ข ๋ฅ ๋ณ๋ก ๊ฐ์ฅ ํฐ ๋ฌผ๊ณ ๊ธฐ์ ID, ๋ฌผ๊ณ ๊ธฐ ์ด๋ฆ, ๊ธธ์ด๋ฅผ ์ถ๋ ฅํ๋ SQL ๋ฌธ์ ์์ฑํด์ฃผ์ธ์.
- ๋ฌผ๊ณ ๊ธฐ์ ID ์ปฌ๋ผ๋ช ์ ID, ์ด๋ฆ ์ปฌ๋ผ๋ช ์ FISH_NAME, ๊ธธ์ด ์ปฌ๋ผ๋ช ์ LENGTH๋ก ํด์ฃผ์ธ์.
- ๊ฒฐ๊ณผ๋ ๋ฌผ๊ณ ๊ธฐ์ ID์ ๋ํด ์ค๋ฆ์ฐจ์ ์ ๋ ฌํด์ฃผ์ธ์.
- ๋จ, ๋ฌผ๊ณ ๊ธฐ ์ข ๋ฅ๋ณ ๊ฐ์ฅ ํฐ ๋ฌผ๊ณ ๊ธฐ๋ 1๋ง๋ฆฌ๋ง ์์ผ๋ฉฐ 10cm ์ดํ์ ๋ฌผ๊ณ ๊ธฐ๊ฐ ๊ฐ์ฅ ํฐ ๊ฒฝ์ฐ๋ ์์ต๋๋ค.
3) ์์
- ์๋ฅผ ๋ค์ด FISH_INFO ํ ์ด๋ธ์ด ๋ค์๊ณผ ๊ฐ๊ณ
ID | FISH_TYPE | LENGTH | TIME |
0 | 0 | 30 | 2021/12/04 |
1 | 0 | 50 | 2020/03/07 |
2 | 0 | 40 | 2020/03/07 |
3 | 1 | 20 | 2022/03/09 |
4 | 1 | NULL | 2022/04/08 |
5 | 2 | 13 | 2021/04/28 |
6 | 0 | 60 | 2021/07/27 |
7 | 0 | 55 | 2021/01/18 |
8 | 2 | 73 | 2020/01/28 |
9 | 1 | 73 | 2021/04/08 |
10 | 2 | 22 | 2020/06/28 |
11 | 2 | 17 | 2022/12/23 |
- FISH_NAME_INFO ํ ์ด๋ธ์ด ๋ค์๊ณผ ๊ฐ๋ค๋ฉด
FISH_TYPE | FISH_NAME |
0 | BASS |
1 | SNAPPER |
2 | ANCHOVY |
- 'BASS' ์ค ๊ฐ์ฅ ํฐ ๋ฌผ๊ณ ๊ธฐ๋ 60cm ๋ก ๋ฌผ๊ณ ๊ธฐ ID ๊ฐ 6์ด๊ณ , 'SNAPPER' ์ค ๊ฐ์ฅ ํฐ ๋ฌผ๊ณ ๊ธฐ๋ 73cm ๋ก ๋ฌผ๊ณ ๊ธฐ ID๊ฐ 9์ ๋๋ค.
- 'ANCHOVY' ์ค ๊ฐ์ฅ ํฐ ๋ฌผ๊ณ ๊ธฐ๋ 73cm ๋ก ๋ฌผ๊ณ ๊ธฐ ID๊ฐ 8์ ๋๋ค. ๋ฐ๋ผ์ ๋ฌผ๊ณ ๊ธฐ ID(ID) ์ ๋ํด ์ค๋ฆ์ฐจ์ ์ ๋ ฌํ๋ค๋ฉด ๊ฒฐ๊ณผ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
ID | FISH_NAME | LENGTH |
6 | BASS | 60 |
8 | ANCHOVY | 73 |
9 | SNAPPER | 73 |
4) ํ์ด
SELECT
fi.ID,
fni.FISH_NAME,
fi.LENGTH
FROM FISH_INFO fi
INNER JOIN FISH_NAME_INFO fni
ON fi.FISH_TYPE = fni.FISH_TYPE
WHERE (fi.FISH_TYPE, fi.LENGTH) IN (SELECT FISH_TYPE, MAX(LENGTH)
FROM FISH_INFO
GROUP BY FISH_TYPE)
ORDER BY 1;
[Reference]
๋ฐ์ํ