작성
·
27
·
수정됨
0
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)
[질문 대상 위치]
강의 영상:03:00
지점
강의록:6. CASE 문.pdf
- CASE 문 기본2
- CASE 문과 사용 위치
[질문 내용]
안녕하세요, 영한님.
다음과 같이 'SELECT
절에서 사용한 CASE
문을 그대로 복사-붙여넣기 해서 ORDER BY
절에서 사용(THEN 결과는 1, 2, 3으로 변경)' 하셨는데요(아래 코드. 방법1).
ORDER BY
CASE
WHEN price >= 100000 THEN 1
WHEN price >= 30000 THEN 2
ELSE 3
END ASC
실습하던 중 아래 코드(방법2)와 같이 'SELECT
절에서 정의한 컬럼 별칭(price_label
)과 THEN
값('고가', '중가', 저가')을 이용'해서 정렬할 수도 있겠다고 생각해서 시도해봤고, 실행이 성공하여 영한님 코드와 동일한 결과가 나왔습니다.
ORDER BY
CASE
WHEN price_label = '고가' THEN 1
WHEN price_label = '중가' THEN 2
WHEN price_label = '저가' THEN 3
END ASC
이때 자바와 같은 프로그래밍 언어 입장에서 보면 방법2의 경우가 'SELECT
절의 CASE
문 로직이 바뀌더라도 ORDER BY
절의 CASE
문 로직은 변경할 필요가 없으므로' 유지보수성 측면에서 더 좋겠다고 판단했습니다.
그런데 다음과 같은 반론(?)도 생각나더라구요.
(애플리케이션 로직과 달리) 쿼리 문은 엄청나게 길고 복잡해질 가능성이 적으므로, 그냥 방법1처럼 복사-붙여넣기 해서 써도 무방하다.
오히려 ORDER BY
절의 CASE
문을 새롭게 작성하는 과정에서 오타가 발생하여 오류를 일으킬 위험이 존재하니, 그냥 방법1처럼 복사-붙여넣기 해서 써도 무방하다.
간단한 쿼리의 경우 ORDER BY
절의 CASE
문을 새롭게 작성하는 데에 비교적 많은 시간이 소모되는 비효율성이 존재하니, 그냥 방법1처럼 복사-붙여넣기 해서 써도 무방하다.
이에 대해서 영한님의 의견은 어디에 가까우신가 의견 여쭙고 싶어서 글 남깁니다!
답변 1
0
안녕하세요, 인프런 AI 인턴입니다. dev.rudevico님.
SELECT 절과 ORDER BY 절에서 CASE 문을 사용할 때 어떤 방식이 더 효율적인지에 대한 고민을 하신 것 같습니다. 두 방법 모두 장단점이 있고, 상황에 따라 적절한 방법을 선택하는 것이 중요합니다.
일반적으로 김영한님은 유지보수성을 중요하게 여기실 가능성이 높습니다. 특히 프로젝트가 커지고, 여러 사람이 작업할 때 코드의 일관성과 변경 용이성은 중요합니다. 그러므로 방법 2를 여러 상황에 맞춰 신중히 고려해보실 것으로 예상합니다.
관련된 유사한 답변도 같이 참고해 보시면 좋을 것 같습니다:
- QueryDSL 사용 시 order by case 구문 질문 드립니다! - QueryDSL과 ORDER BY CASE 구문 관련 새로운 방법에 대한 내용이 논의되고 있습니다.
- 정렬 조건에 대해 질문이 있습니다. - Enum으로 정렬 문제를 다루고 있으며, 유지보수성과 관련된 내용이 포함되어 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.