이번 포스팅은 데이터리안 부트캠프 강의를 수강하면서 의문이 들었던 내용에 대해 개인적으로 찾아본 부분을 정리하고자 한다.
지극히 개인적으로 모르는 부분이나 이해를 바로 못했던 부분에 대해서만 다룰 예정이다.
지난 포스팅 글에 아쉬웠던 부분으로 작성했던 내용들에 대한 이야기이기도 하다.
참고로 다시 언급하자면, 디스코드를 통해 추가로 질문을 올리기도 가능하고, 내가 개인적으로 어떻게 활용해야하는지 찾아볼 수 있게 기록을 탐색하는 것도 가능하다.
그리고 주차별로 자주 묻는 질문에 대해 정리된 부분도 있으니 참고가 가능하다는 점! 유용하게 나도 매번 참고중이다.
+ 해당 질문에 대한 답변은 GPT 돌렸다.
1. ESCAPE 설명 부족
SQL 문제를 풀기 위해서는 ESCAPE 구문을 작성해서 사용하는 문제가 있어 힌트로만 제공이 되었었다.
SQL 관련해서 이론적으로 공부하기도 했고, 단 며칠간 교육을 통해 배운적도 있지만 SQL을 중점으로 생각하려 한적이 없어서 어떻게 활용되는지에 대해서도 잘 몰랐던 것도 사실이다.
그렇다보니 SQL 구문을 하나씩 차근차근 배우고자 입문반을 신청하기도 한건데 ESCAPE 구문에 대해 정확하게 활용하는 방법을 설명해주지 않은 부분이 아쉬웠다.
먼저, 강의에서는 SQL 구문에서 기호를 인식하지 못하는 경우가 있기에 '\' 를 사용해서 ESCAPE로 활용할 수 있다고 했다.
그러나 모든 DBMS 에서 이를 활용할 수 있는 것이 아니라 ESCAPE 구문이 더 정확하게 수행하도록 할 수 있었다.
➞ 결과적으로 해당 내용에 대한 설명을 해주셨다면 좋았을텐데 없어서 개인적으로 찾아봐야만 왜 그런지를 이해할 수 있었다.
2. 집계함수 ROUND, FLOOR 혼동
이 부분은 내가 혼란스러워서 찾아봤다.
ROUND(컬럼, 0)
FLOOR(컬럼)
위의 두 줄의 코드값의 결과가 항상 같을 것이라고 생각했다.
이 때 컬럼의 숫자가 1.2 라고 가정했을 때는 이 코드를 사용했을 때 결과값이 둘다 1로 동일하게 나온다.
ROUND 함수의 경우 반올림을 하기 때문에 소수점 또는 해당자리 0~4까지는 버림을, 5~9까지는 올림을 진행한다.
그리고 뒤의 0의 경우는 소수점 자릿수를 의미한다.
0이면 소수 0자리, 1이면 소수 1자리, 그럼 -3이면? 1000자리에서 반올림을 진행하라는 뜻. (헷갈릴 수 있음!)
FLOOR 함수의 경우는 버림을 하기 때문에 소수점자리가 어떻든 간에 무조건 소수점을 버려버린다.
결론적으로 보면 ROUND 함수와 FLOOR 함수의 기능이 중복되는 경우도 있지만 항상 같을 수 없다.
3. TYPE에 따른 정렬 방법 설명 부족
한 문제에서 요일에 대한 정렬을 진행해야했다.
ORDER BY를 사용하면 당연하게 시간의 순서로 자연스럽게 정렬이 되는줄 알았다.위의 경우는 보통 날짜나 요일을 DATE, TIME 등의 타입으로 지정이 되어있다.
해당 문제는 string 타입으로 지정이 되어서 내가 생각한 것과 다르게 시간의 순서로 정렬이 되지 않았다.
데이터가 가진 값들을 리스트 형식으로 정리하면 아래와 같았다.
['Thur', 'Sun', 'Sat', 'Fri'] ➞ 목, 금, 토, 일
그래서 나는 당연하게도 내림차순을 기준으로 '일 > 토 > 금 > 목' 이라는 결과가 나올 것이라고 생각을 했다.
string 타입은 별다르게 시간이나 요일을 지정할 수 있는게 아니라 정말 문자를 그대로 보관해놓는 것이기에 시간의 개념이 없다.
이런 경우는 2가지 해결법이 있다.1. 로우 데이터를 수정한다.➞ 이미 string 타입으로 지정된 것은 시간의 개념을 추가하지 못해서 쿼리로 타입을 변경하는 것이 불가능 하기에 날짜 데이터를 입력해서 요일을 뽑아올 수 있도록 한다.2. 일일이 문자를 어떻게 인식해야하는지를 바꾸는 쿼리를 작성해서 입혀준다.➞ FILED, CASE 구문을 활용해서 요일순으로 정렬할 수 있도록 한다.
결론적으로 말하면 문제에서 원하는건 시간의 정렬이 아니었기 때문에 진행할 필요는 없었지만, 나는 개인적으로 왜 시간의 순서로 정렬이 되지 않은지에 대해 이해가 힘들었고, 거기다가 그 답이 정답이라는 것도 왜 그런건지 설명이 듣고 싶었는데 설명영상을 따로 없었다.
그래서 이 부분을 따로 찾아보니 데이터 타입을 내가 유의깊게 보지 않았다는 사실에 어떤 것들을 더 유의해야하는지를 한번 더 생각할 수 있는 시간을 가졌다.
이처럼 헷갈릴 수 있는 부분이 모두 영상이나 질문으로 남아있는 것이 아니라 개인 공부를 할 수 있는 시간을 자연스럽게 갖게 해주고 있어서 오히려 지금의 나에게는 조금이라도 더 시간을 할애하게하는 원동력이 되어 주는 것 같아 좋다.
현재 3주차 강의를 앞두고 있는데, 추후에 코딩 테스트를 깨기 위한 실력을 겸비할 수 있을지 어떻게 해나가면 될지를 기대하게 되는 것 같다.
'SQL' 카테고리의 다른 글
| [데이터리안 부트캠프] 입문반 47기 week2 미션 - RFM 분석관련 뜯어보기 (1) | 2025.11.16 |
|---|---|
| [데이터리안 부트캠프] SQL 데이터 분석 캠프 입문반 47기 수강후기 (+ 강의 수강료 지원받는 팁!) (0) | 2025.11.16 |
| [MySQL] 데이터 베이스 / 특정 테이블 백업하는 방법 5가지와 트랜잭션과의 차이점 짚고가기! (3) | 2024.03.26 |
| [SQL] 전에 다루지 않았던 구문 체크하기 (0) | 2023.10.13 |
| [SQL] 데이터 형 (타입)에 대해 알아보자! (2) | 2023.10.13 |