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번만 비교분석해보겠습니다.




보면 저는 굳이 null 값을 제거 해서 계산했는데 그럴필요없이 문제풀이에선 전체 셀수를 카운트해서 좀더 쿼리를 안정적이게 바꿔놓았습니다. 거기다 저는 서브쿼리를 여러번 사용하는게 습관화 되서 그런지 가독성도 떨어지는 것 같네요.
필요한 부분만 쓰는 방식을 연습해봐야겠습니다.
3. 해결방법
일단 제가 문제를 푼방법이랑 선생님께서 풀어주신 방법이랑 너무 다른부분이 많아서 도움이 많이 되었습니다.
계속 코딩을 비슷한 방식으로 풀어가려는 습관이 있는데 모범적인 정답을 보고 왜 그런지 설명까지 해주셔서 좀더 가독성있게 풀어나갈 수 있게 된것 같습니다.
그리고 그동안 애매했던 부분들을 정리해주셔서 좀더 깔끔하게 쿼리를 작성할 수 있게 된것 같습니다.