특이한 검색조건 컬럼 조회

종원유·2021년 12월 27일
0

SQL

목록 보기
1/1
post-thumbnail

스터디원이 회사 프로젝트를 진행하던 중 SQL에서 어려움을 겪고 있어, 경험이 조금 더 많던 나에게 조언을 구했다.

나도 잘한다고 자신하지는 않지만 일주일 내내 끙끙대는 모습이 안쓰러워 도와주고 싶었다.


사정은 이러했다.

A라는 테이블이 있다.
이 A라는 테이블엔 Condition이라는 컬럼이 있고 이 하나의 컬럼을 조건으로 걸어서 결과를 조회해야한다.

처음에 듣고 별로 어렵지 않아 보였다(워낙 설명을 개떡같이 했기 때문....).

하지만 데이터를 직접 보니 조금 특이하게 구성되어 있었다.

Condition 컬럼

1 : 남성
2 : 여성
3 : 20대
4 : 30대
5 : 40대
...

위처럼 한 컬럼에 여러 조건 데이터들이 담겨있었다


그림이 굉장히 허접하지만
설명을 하자면 USER_SEQ가 7에 해당하는 사람은 condition 1, 3에 해당하니까 20대 남성이다.
USER_SEQ 8에 해당하는 사람은 2, 4이니까 30대 여성이다.

내가 생각하기에 저런 사용자 정보는 속성마다 따로 컬럼을 두기에 "이건 이상하다. 너가 잘못 이해한 거 아니냐." 라고 친구에게 말했지만 지금 내가 이해한게 맞다더라.

처음 보는 케이스라서 당황스러웠지만, 듣고보니 이유가 있었다.

관리자가 condition(조회조건)을 동적으로 추가할 수 있어야하는 구조라고 한다.

정리하자면 condition 컬럼에 7 : 서울거주자
이런 식으로 검색조건을 추가하고 추가된 검색조건으로 검색할 수 있는 기능이 필요하다고 한다.

위 같은 사정으로 어려움이 있고,

위 퀴리까지는 작업했는데, USER_SEQ를 어떻게 조건을 걸어서 가져올지 모르겠다고 한다.

나도 절실한 친구의 말에 도와주고 싶어 여러 방법을 고민하였다.

이걸 교집합으로 가져올지, condition에 해당하는 걸 전체 끌어와서 검색 조건에 모두 해당하는 것만 남기면서 하나씩 덜어내는 쿼리를 짜야할지 고민했다.

고민하던 중 condition에 해당하는 것을 OR 조건으로 가져온 뒤 COUNT 함수를 통해서 모두 해당하는 USER_SEQ를 가져오는게 제일 간단해보였다.

위처럼 서브쿼리를 작성해주었고,

위와 같이 쿼리를 작성하니 다행이 데이터는 문제 없이 나오는 것 같다.
이번에 SQL을 작성하면서 SQL에 이해도가 높았다면 더 깔끔하고 효율적인 SQL을 작성할 수 있지 않았을까 라는 생각을 하며 SQL 공부를 해야겠다는 생각을 했다.

profile
개발자 호소인

0개의 댓글