4월 25일 TIL

이진우·2024년 4월 25일
0

TIL

목록 보기
4/32

오늘은 파이썬 강의가 지급이 되어서 파이썬 강의를 듣고 ADsP를 간단하게 복습하고 SQL코드카타를 풀었다

파이썬 강의를 통해서 파이썬 내용을 복습을 하였습니다. 강의 내용은 사전 캠프에서 강의한 내용이었지만 튜터님께서 머신러닝과 딥러닝 등 다양한 활용 방법 및 예시를 알려주셔서 더 깊게 이해할 수 있었던 것같다.

  • 빠르게 파이썬을 숙달해서 고급 파이썬 강의를 받아내자!

그리고 SQL 코드카타를 풀면서 유의미한 내용과 해결방법을 발견하였다.
1. group by로 한가지 칼럼을 그룹핑하고 다른 칼럼에 MAX함수를 사용하더라고 그외의 칼럼들이 MAX함수 결과값 데이터가 포함된 행으로 정렬이 되지 않는다

- 이 사실을 전혀 몰랐고 의심도 해보지 않고 당연히 자동으로 행 데이터가 가져오는 줄 알고 시간을 많이 소비하였다.
- 이 문제를 해결하기 위해서는 서브쿼리문을 사용해서 한번 처리를 해주고 서브쿼리와 본 테이블을 join해서 사용해야한다.
  1. join을 할때, KEY 값을 꼭 한가지가 아니여도 된다.

  2. 위 문제를 통해서 내가 쿼리문을 틀리지 않고 잘 작성하였다고 100% 확신을 하더라도 꼭 반드시 무조건 전체 데이터를 확인을 해보고 데이터를 세밀하게 짤라서 확인해봐야 한다.

  3. 서브쿼리문을 무조건 사용하지 말고 일단 데이터의 칼럼 구성과 join할 테이블 간의 관계를 잘 살펴보자.

  4. 이거는 확실하지는 않는데 프로그래머스의 채점 시스템은 서브쿼리문을 사용하는 것을 좋아하지 않은 것같다.
    - 서브쿼리문을 사용하면 서브쿼리를 사용하지 않은 쿼리문과 동일한 과정의 동일한 결과값이 나와도 틀렸다고 말하는 것같다.
    - 이거는 내일 맑은 정신으로 코드를 더 세밀하게 뜯어보자

    #서브 쿼리문 사용
    select WRITER_ID, NICKNAME, 전체주소, 전화번호
    from
    (
       select WRITER_ID, NICKNAME, 
              concat(CITY, ' ',STREET_ADDRESS1, ' ', STREET_ADDRESS2) as '전체주소',
              concat(substr(tlno, 1, 3), '-', substr(tlno, 4, 4), '-', substr(tlno, 7, 4)) as '전화번호',
           count(BOARD_ID) as cnt_b
       from USED_GOODS_BOARD b
       join USED_GOODS_USER u on b.writer_id = u.user_id
       group by 1
       having cnt_b >= 3
    ) sub1
    order by 1 DESC
    #서브쿼리문 사용 X
    select a.user_id,a.nickname,
          concat(a.city,' ',a.STREET_ADDRESS1,' ',a.STREET_ADDRESS2) as 전체주소,
          concat(substr(a.tlno,1,3),'-',substr(a.tlno,4,4), '-',substr(a.tlno,8,4))  as 전화번호
    from USED_GOODS_USER a join USED_GOODS_BOARD b
    on b.writer_id = a.user_id
    group by 1
    having count(a.user_id) >=3
    order by a.user_id desc;
    

    오늘은 생각보다 얻어가는 것이 많은 하루였다.

0개의 댓글