sql 코드카타. 어제부터 계속 틀려서 물려있던 코드카타. 분명 다 맞는데 도대체 모르겠어서 계속 디버깅 시도하다가도 성공 못했었다. 분명히 이런경우에는 자그마한 어떤 것 하나를 놓쳐서 못푸는것인데 도대체 모르겠어서 정답 쿼리를 보면서 비교를 했던 것 같다. 그리고 드디어 알아냈다. 그리고 정말 어이가 없었다. 항상 sql 코드카타 하면서 느끼는건데 진짜 어이없는것에서 자꾸 틀렸다고 해서 나중에 알게되었을 때 아 이것때문이었다니!! 를 하게된다. 암튼 오늘 오전 내내 이것때문에 다른것 진도를 못 나갔다. 씩씩.. 암튼 오늘 sql 코드카타로 인해서 얻은 것은: 자꾸 틀렸다고 하면 예시를 보라!! 이다. 예시를 다시한번 더 꼼꼼히 뜯어보았다면 알게 되었을 것이다..

이 예시를 잘 보았다면 나의 코드카타는 더 시간이 적게 걸렸을 것이다.
그리고 계속 틀렸던 나의 코드실행결과

차이점이 보이는가?
그렇다.. 전체주소를 보면 띄어쓰기가 되어있지 않다!! 진짜 어이없지만 저것때문에 계속 틀렸던 것이다. 나는 계속 애꿎은 다른 절들을 수정하고 수정했었다. ㅎ하하 이렇게 하나씩 알아가는거지~~ 헤헤,,,,,,,,유레카!! (긍정회로 계속해서 돌려야함) 그래서 오늘 지식+1: 띄어쓰기를 할 때에는 ' '를 넣어주기!(''사이에 꼭 스페이스바를 해주어야 한다) 내가 했던 쿼리는 원래 이거였다.
select user_id, nickname, concat(city, street_address1, street_address2) as 전체주소, concat(substr(tlno,1,3),'-',substr(tlno,4,4),'-',substr(tlno,8,4)) as 전화번호
from used_goods_board b inner join used_goods_user u on b. writer_id = u.user_id
group by user_id
having count()>=3
order by user_id desc

이것을 이제 수정하게 되면
select user_id, nickname, concat(city,' ', street_address1,' ', street_address2) as 전체주소, concat(substr(tlno,1,3),'-',substr(tlno,4,4),'-',substr(tlno,8,4)) as 전화번호
from used_goods_board b inner join used_goods_user u on b. writer_id = u.user_id
group by user_id
having count()>=3
order by user_id desc

이렇게 된다. select절에 그 전체주소 concat안에 ' '가 생긴것이 보일 것이다. 이렇게 하게 되면 코드실행결과는

이렇게 나오게 된다. ㅎㅎ 드디어 고전하던 코드카타 끝- 이건 제출하지말고 나중에 다시 풀어봐야겠다.
+추가로 count(*)를 쓰게 되면 모든 행을 세게 되어서 user_id와 관련된 빈 데이터나 null값이 있을 경우에도 그 행도 포함될 수 있다고 한다.. 그래서 대신에 count(b.board_id)를 쓰라는 조언을 들었다. 게시물 고유 id이기 때문에 실제로 게시물이 등록된 경우만 세기 때문에 정확한 게시물 수를 셈할 수 있다고 한다.
sql 두번째 문제: CAR_RENTAL_COMPANY_CAR 테이블에서 '네비게이션' 옵션이 포함된 자동차 리스트를 출력하는 SQL문을 작성해주세요. 결과는 자동차 ID를 기준으로 내림차순 정렬해주세요.
쿼리를
SELECT * from car_rental_company_car
where options in ('네비게이션')
order by car_id desc
이렇게 적었더니 코드를 실행했을 때, options 컬럼에 딱 '네비게이션' 만 있는 컬럼만이 나왔다. in()은 정확하게 일치하는 값만 뽑아내는 것 같다.

그래서 수정한 쿼리:
SELECT * from car_rental_company_car
where options like '%네비게이션%'
order by car_id desc
를 했더니 이번에는 밑의 화면과 같이 options에 '네비게이션'을 포함하는 모든 행이 추출되었다. 그리고 채점했을 때 정답이 나옴.

-> in은 정확하게 일치하는 것을 말하는 것이고, like구문은 이런거랑 비슷한게 있으면 다 뽑아줘. 인 듯하다. 계속 코드카타 풀면서 개념을 확실하게 잡아가는 과정인 것 같다. 비유를 들자면, 알고는 있지만 아직 명확한 선이 나타나지 않는 안개낀 풍경화였다면 코드카타를 풀수록 고화질로 선명해지면서 명확한 선이 나타나지는 느낌이다. 이번 문제는 쉽게 풀려서 다행이다ㅎㅎ
오늘은 처음으로 알고리즘 코드카타를 풀어보았다. 파이썬이 너무 어렵게 느껴지고 sql 라이브세션은 그래도 이해를 하면서 따라갔던 것 같은데 이번 파이썬 세션은 진짜 머릿속에?를 가득 달고 따라가는 중이다. 저게 뭔소린지는 모르겠는데,, 튜터님이 어떤 말씀을 하고 싶으신건지는 알겠는.. 그런 아이러니.. 뭔말인지 알겠는가,,?암튼 의도는 알겠다는 말이다. 근데 내 머릿속에 판다스 지식이 없으니 이해가 안된다는 말이고. 저게 무슨 함수인지. 그냥 그렇구나. 하면서 따라가는중.. 그리고 중간에 집중력이 현저히 떨어지는중. 뭔말인지몰라서.

암튼 캠프 시작한지 한달이나 돼서야 알고리즘 코드카타를 풀어보았다. 이번에 같이 조가 된 조원분이 알고리즘 코드카타도 하나씩 풀어보기를 권해주셔서 맨날 sql코드카타만 풀다가 오늘은 알고리즘도 풀어보았다. 근데 풀렸다. 그냥 내 머릿속에 있는지식으로 해석하면서 풀어보았는데 풀려서 이게 왜 풀린건지.. 이게 맞는건지.. 어 이게 풀리네? 이런 느낌..?
그래서 우리 쳇지피티씨에게 물어보았다. 음 그래서 좀 더 잘 이해를 해보았다. 일단 코드 투척


이런 문제인데, 그래서 나는,, 음 그냥 써보았다.

갑자기 맞았음.. 이게 왜,,? 맞아..?

암튼 맞댄다..ㅎㅎ 헤,,?

내가 궁금한 것은 왜 코드 뒤에 ; 붙는건지,,? 원래 코드뒤에는 :이거 아니었어..?
엄,, 진짜 어이없는데 내가 푼게 c언어라서 ;이게 붙은거였음...ㅋㅋㅋㅋㅋ 아 민망쓰,, 튜터님께 찾아갔는데 파이썬은 ;이거 안쓴다고 하셔서 에..? 하다가 그 코드카타 올라가 있는 거에 초기 세팅자체가 c언어로 되어있어서 그냥 나는 그거 신경못쓰고 풀었던 거임. ㅎㅎ 그 언어마다 다르다고 함.

그래서 다른언어(c언어)로 풀었던거임. 저기 언어를 파이썬으로 바꿔서 풀어야 함.ㅎㅎㅎㅎㅎㅎㅎ 와 튜터님 안찾아갔으면 계속 c언어 풀뻔... 아찔... 클난뻔해따..하.. 찾아가길 잘햇다.. 하하
ㅋㅋㅋㅋㅋ왠지 못알아보겠더라고ㅋㅋㅋ,,,
다시 풀고 제출하자!

파이선으로 제대로 다시 푼 정답. c언어랑 푼 방식은 동일한데 ;안쓴거랑 조금 다르다. 정답 바로 나옴. 괜히 c언어 페이지 보고 지금까지 쫄았던거다. 어이가 없구만 정말로!
알고리즘 코드카타 지금까지 c언어보고 겁먹어서 못 풀었었는데 오늘 파이선으로 바꾸고 나니까 생각보다 어렵지 않아서 원래 계획은 1개만 풀려고 했는데 그냥 두개 풀어버렸다. 두번째것은 곱하는 거라서 그것도 어렵지 않았다.
그리고 마지막으로 오늘 판다스 숙제 풀려고 하는데 내가 알아야 할 지식은 이거였다.
판다스 과제를 하기 위해서 내가 알아야 할 내용들:
1. 판다스 불러오는것부터 시작
2. 결측치 개수 세고 결측치 행 지우는 방법
3. 데이터프레임에서 평균값과 중앙값을 구하는 방법. 소수점 첫번째자리까지 표현(이거는 sql과 마찬가지로 round 함수를 쓰는것인가?), 중복값 없이 추출하는 방법
4. 피벗테이블을 구현하여 출발지와 도착지를 기준으로 카운트하기. 필터링 하는 방법
이었다. 일단 나는 판다스 불러오는것부터가 안되는 사람이라(아직도..)ㅎㅎ,,,(아니 벌써 이 캠프 시작한지 한달되었는데 암튼..)
원래 내가 사용하던 구글 계정이 드라이브가 꽉 차서 새 계정으로 드라이브 사용하려고 다시 코랩 연결하고 파일 저장했다. 계속 파일 저장해서 불러오는것이 잘 안되고 힘들었는데, 오늘 강의 복습하면서 제대로 알게되었다. 왜 자꾸 경로 알아보라고 하는건가 했는데, 경로를 알아야 불러올 수가 있는거였다.
저장하는방법도 알게 되었고, 저장한 것을 불러오려면 경로를 써야 된다는 것도 알게되었다. 판다스는 왜 임포트하는지는 아직도 모르겠지만 말이다? 뭐 하다보면 알게 되려나,,?하.
암튼 네 불러오는것까지. 그러니까 첫번째 문제는 해결할 수 있게 된거다.
결측치는 내일 그 라이브세션 복습하면서 다시 해보자..
오늘은 유난히 피곤하고 힘든 날이었다. 유난히도..
고생했다.
그리고 어제보다는 멘탈이 잡혀서 다행이다. 어제는 이도저도 아닌느낌으로 그냥 멘탈만 깨졌었는데 오늘은 그래도 하나씩 수행하면서 공부다운 공부를 했다. 다행이다정말로. 이제서야 파일 불러올 수 있게 된 꼴찌 거북이지만 화이팅이다. 그냥 포기만 하지말자.