๐ 2025-05-22 ์ ๋ฌธ๋ฒ์ ๋จ๊ฑด ์กฐํ SQL ์ ๋ฆฌ
๐ ๋จ๊ฑด ์กฐํ ๋ชฉ์
- ํน์ ์ ๋ฌธ์ ํ์ฝ๋์ ๋ํด ์ค๋ ๋ ์ง๋ฅผ ๊ธฐ์ค์ผ๋ก ์ ํจํ ์ต์ ์ ๋ฌธ๋ฒ์ ์ ์กฐํํ๊ธฐ ์ํจ
- ์กฐํ ๊ฒฐ๊ณผ๋ก ์ ๋ฌธ์ ์์๋ณ๊ฐ๊ณผ ์๋น์ค์๋ณ๊ฐ์ ๋ฐํ
๐ SQL ์์ โ (์๋ธ์ฟผ๋ฆฌ ์ฌ์ฉ)
SELECT
์ ํ์๊ธ์ต๋ง์ ๋ฌธ์ ํ์ฝ๋ || ์ ๋ฌธ๋ฒ์ ๋ฒํธ AS ์ ํ์๊ธ์ต๋ง์ ์์๋ณ๊ฐ,
์ ํ์๊ธ์ต๋ง์๋น์ค์๋ณ๊ฐ
FROM ์ ๋ฌธ๋ฒ์ ๋ด์ญ
WHERE ์ ๋ฌธ์ ํ์ฝ๋ = :์ ๋ฌธ์ ํ์ฝ๋
AND ์ ๋ฌธ์ ์ฉ์ผ์ = (
SELECT MAX(์ ๋ฌธ์ ์ฉ์ผ์)
FROM ์ ๋ฌธ๋ฒ์ ๋ด์ญ
WHERE ์ ๋ฌธ์ ํ์ฝ๋ = :์ ๋ฌธ์ ํ์ฝ๋
AND ์ ๋ฌธ์ ์ฉ์ผ์ <= TO_CHAR(SYSDATE, 'YYYYMMDD')
);
MAX(์ ๋ฌธ์ ์ฉ์ผ์)
๋ฅผ ์ฌ์ฉํ์ฌ ์ค๋ ๊ธฐ์ค ๊ฐ์ฅ ์ต์ ์ ์ฉ์ผ์๋ฅผ ์ถ์ถ- ํด๋น ์ผ์์ ํด๋นํ๋ ๋จ์ผ ๋ ์ฝ๋๋ฅผ ์กฐํ
๐ SQL ์์ โก (์ ๋ ฌ + FETCH ๋ฐฉ์)
SELECT
์ ํ์๊ธ์ต๋ง์ ๋ฌธ์ ํ์ฝ๋ || ์ ๋ฌธ๋ฒ์ ๋ฒํธ AS ์ ํ์๊ธ์ต๋ง์ ์์๋ณ๊ฐ,
์ ํ์๊ธ์ต๋ง์๋น์ค์๋ณ๊ฐ
FROM
์ ๋ฌธ๋ฒ์ ๋ด์ญ
WHERE
์ ๋ฌธ์ ํ์ฝ๋ = :์ ๋ฌธ์ ํ์ฝ๋
AND ์ ๋ฌธ์ ์ฉ์ผ์ <= TO_CHAR(SYSDATE, 'YYYYMMDD')
ORDER BY
์ ๋ฌธ์ ์ฉ์ผ์ DESC,
์ ๋ฌธ๋ฒ์ ๋ฒํธ DESC
FETCH FIRST 1 ROW ONLY;
ORDER BY
๋ก ์ ๋ ฌ ํFETCH FIRST 1 ROW
๋ก ์ต์ 1๊ฑด ์ถ์ถ- ์ฑ๋ฅ๊ณผ ๊ฐ๋ ์ฑ ๋ฉด์์ ์ค๋ฌด์์ ์์ฃผ ์ฌ์ฉ๋จ
โ ์ฐธ๊ณ ์ฌํญ
-
์ ๋ฌธ์ ์์๋ณ๊ฐ: ์ ๋ฌธ์ ํ์ฝ๋ + ์ ๋ฌธ๋ฒ์ ๋ฒํธ๋ฅผ ๊ฒฐํฉํ ๊ฐ
-
์ ๋ฌธ์ ์ฉ์ผ์๋
VARCHAR(8)
์ด๋ฏ๋ก ๋ ์ง ๋น๊ต ์TO_CHAR(SYSDATE, 'YYYYMMDD')
์ฌ์ฉ ํ์ -
์ ๋ SQL์ ๊ฐ์ ๋ชฉ์ ์ ๋ฌ์ฑํ์ง๋ง ์ํฉ์ ๋ฐ๋ผ ์ฑ๋ฅ ๋ฐ ๊ฐ๋ ์ฑ์์ ์ฐจ์ด๊ฐ ์์
๐ง ์ค๋ฌด ํ:
-
์ ๋ ฌ ๋ฐฉ์(
ORDER BY + FETCH
)์ ์ตํฐ๋ง์ด์ ์ ๋ฐ๋ผ ๋ ๋น ๋ฅผ ์ ์์ -
๋ฐ๋ฉด
MAX()
์๋ธ์ฟผ๋ฆฌ๋ ์ง๊ด์ ์ด๊ณ ์ ์ง๋ณด์์ ์ ๋ฆฌํ ์ ์์