카테고리 없음

카테고리 없음내일배움캠프_QAQC_사전캠프 14일차 (SQL 문제풀이)

iron-min 2025. 9. 4. 17:54

1. 오늘 배운것

오늘은 기존 SQL 실전문제 문제풀이 및 쿼리 작성시 유의할점 등을 배웠습니다!

 

1) SQL 쿼리 작동순서

 

SQL 예약어는 다음 순서로 작동합니다.

저같은 경우 그룹으로 묶은 값을 집계값으로 걸러내야 했을때 where절을 썼었는데 쿼리의 작동순서에 위반되어 오류가 났던적이 있습니다. 그래서 위 같은 경우는 HAVING으로 묶어줘야 합니다.

 

2) SQL 쿼리 작성순서

솔직히 그동안 너무 자연스럽게 써와서 인지하지 못했는데 이렇게 작성해줘야 한다고 합니다.

나중에 코딩할때 참조하면 좋을것 같습니다.

 

3) IF문과 CASE문 차이

위 예시와 같이 IF 문과 CASE문은 비슷하게 사용할 수 있습니다.

그래서 IF문은 간단한 조건일때, CASE 문은 복잡하거나 여러 조건일때 사용하는것이 좋다고 합니다.

 

4) 서브쿼리, with 문 차이

서브쿼리와 with 문의 차이는 제가 13일차 TIL에 올려놨습니다! 추가적으로 확인해 봐도 되겠네요.

 

5) GROUP BY, OVER() 함수의 사용 조건 차이

 

6) 검색 조건을 WHERE절로 쓰는지, SELECT 안에 넣는지

- 데이터를 바로 걸러내고 싶은 경우 = WHERE

- 데이터를 바꿔서 표현하고 싶은 경우 = SELECT안의 IF나 CASE등의 계산식 활용

 

 

2. 시도해본것

추가로 오늘 실전문제도 풀어주셔서 제가 푼 쿼리랑 비교해보았습니다.

예시로 3번만 비교분석해보겠습니다.

 

3번문제
문제풀이 입니다
제가 쓴 쿼리입니다

보면 저는 굳이 null 값을 제거 해서 계산했는데 그럴필요없이 문제풀이에선 전체 셀수를 카운트해서 좀더 쿼리를 안정적이게 바꿔놓았습니다. 거기다 저는 서브쿼리를 여러번 사용하는게 습관화 되서 그런지 가독성도 떨어지는 것 같네요.

필요한 부분만 쓰는 방식을 연습해봐야겠습니다.

 

 

3. 해결방법

일단 제가 문제를 푼방법이랑 선생님께서 풀어주신 방법이랑 너무 다른부분이 많아서 도움이 많이 되었습니다.

계속 코딩을 비슷한 방식으로 풀어가려는 습관이 있는데 모범적인 정답을 보고 왜 그런지 설명까지 해주셔서 좀더 가독성있게 풀어나갈 수 있게 된것 같습니다.

 

그리고 그동안 애매했던 부분들을 정리해주셔서 좀더 깔끔하게 쿼리를 작성할 수 있게 된것 같습니다.