[TIL]25.03.19 | SQL 코드카타 복습+Python 라이브세션

성소희·2025년 3월 19일
0

오늘은 SQL 코드카타 level 2 복습, Python 라이브세션 1-4회차를 복습했다.

🔥SQL 코드카타(11-20번)

파이썬 공부하면서 SQL을 차츰차츰 잊어가고 있는 듯하여
다시 SQL 코드카타 문제와 함께 sql 개념을 복습하기로 했다.

Level 2 (복습)

11번 문제 - 여러 기준으로 정렬하기
출처 : https://school.programmers.co.kr/learn/courses/30/lessons/59404
풀이 : 동물 보호소에 들어온 모든 동물의 아이디와 이름, 보호 시작일을 이름 순으로 조회해야되기 때문에 ORDER BY를 사용했다.

12번 문제 - 이름에 el이 들어가는 동물 찾기
출처 : https://school.programmers.co.kr/learn/courses/30/lessons/59047
풀이 : 동물 보호소에서 이름에 'el'이 들어간 개를 찾아서 아이디와 이름을 조회하고 그 결과를 이름 순으로 조회해야 되기 때문에 like연산자order by 사용했다.
*단, 이름의 대소문자는 구분하지 X

♦️개념 복습 :

  • like 연산자는 문자열 패턴을 비교할 때 사용되는 연산자로 =연산자와는 달리 특정 패턴과 일치하는 데이터를 검색하는 데 유용하다. 주로 where 절에서 사용되며, 와일드카드(%,_)와 함께 사용하여 유연한 검색이 가능하다!
    NOT LIKE 를 사용하면 LIKE와 반대로 특정 패턴과 일치하지 않는 데이터를 검색할 때 사용 가능하다!

  • 와일드 카드란 like 연산자와 함께 사용되며, 문자열 검색 시 특정 패턴을 정의하는 데 활용된다. 주로 두 가지 와일드 카트 %, _가 있으며, %는 0개 이상의 문자와 매칭, _(언더스코어)는 정확히 한 개의 문자와 매칭을 의미한다.

🚨주의할 점 : where에 들어가는 필터링 조건이 여러개라면 그 여러 조건들을 나열할 때 단순히 ,(comma)를 찍는 것이 아니라 여러 조건을 논리 연산자인 and, or 등으로 연결하여 사용해야 한다. ,(comma)는 where 절에서 조건을 구분하는 문법이 아니기 때문이다!

13번 문제 - 나이 정보가 없는 회원수 구하기
출처 : https://school.programmers.co.kr/learn/courses/30/lessons/131528
풀이 : USER_INFO 테이블에서 나이 정보가 없는 회원이 몇 명인지 출력하되 해당 컬럼명을 USERS로 출력해야 되기 때문에 WHERE절,COUNT(), IS NULL을 사용했다.

♦️개념 복습 :

  • IS NULL은 특정 열의 값이 NULL인지 여부를 확인하는 연산자이다. NULL은 어떠한 값과도 비교할 수 없음

-COUNT()는 테이블에서 행 개수를 반환하는 함수이다.
테이블의 전체 행 개수를 반환해야하는 경우에는 COUNT(*)를 쓰고 이때는 NULL값이 포함되지만, 특정 컬럼의 NULL이 아닌 값 개수를 반환해야 할 때는 COUNT(컬럼명)을 쓰고 이떄 NULL값은 제외된다! GROUP BY와 함꼐 사용하면 각 그룹별 개수를 구할 수 있다.

14번 문제 - 가장 비싼 상품 구하기
출처 : https://school.programmers.co.kr/learn/courses/30/lessons/131697
풀이 : PRODUCT 테이블에서 판매 중인 상품 중 가장 높은 판매가를 출력하되, 이때 컬럼명은 MAX_PRICE로 지정해야되기 때문에 MAX()를 사용했다.

15번 문제 - NULL 처리하기
출처 : https://school.programmers.co.kr/learn/courses/30/lessons/59410
풀이 : 동물의 생물 종, 이름, 성별 및 중성화 여부를 아이디 순으로 조회하되, 이름이 없는 동물 이름은 "No name"으로 표시해야 되기 때문에 "order by""랑 ""case when""을 사용했다.

♦️개념 복습 :

  • CASE WHEN문은 조건에 따라 다른 값을 반환하는 조건문이다.
    기본 문법은 CASE WHEN 조건1 THEN 결과1
    WHEN 조건2 THEN 결과2
    ELSE 결과3
    END
    ELSE가 없으면 생략 가능하다.

16번 - 경기도에 위치한 식품창고 목록 출력하기
출처 : https://school.programmers.co.kr/learn/courses/30/lessons/131114
풀이 : FOOD_WAREHOUSE 테이블에서 경기도에 위치한 창고의 ID, 이름, 주소, 냉동시설 여부를 조회하되 냉동시설 여부가 NULL인 경우에는 'N'으로 출력시켜주고 그 결과를 창고 ID 기준으로 오름차순 정렬하기 위해서는 CASE WHENORDER BY, WHERE, LIKE 등을 사용했다.

17번 - 강원도에 위치한 생산공장 목록 출력하기
출처 : https://school.programmers.co.kr/learn/courses/30/lessons/131112
풀이 : FOOD_FACTORY 테이블에서 강원도 위치한 식품공장의 공장 ID, 이름, 주소를 조회하되 이때 결과를 공장 ID 기준 오름차순 정렬해야되기 때문에 ORDER BYWHERE을 사용했다.

18번 - DATETIME에서 DATE로 형 변환
출처 : https://school.programmers.co.kr/learn/courses/30/lessons/59414
풀이 : ANIMAL_INS 테이블에서 모든 레코드에 대해, 각 동물의 아이디와 이름, 들어온 날짜를 조회하되, 날짜는 시분초 제외한 년원일만 보여주고, 그 결과는 아이디 순으로 조회해야되기 때문에 *ORDER BYDATE_FORMAT()**을 사용했다.

19번 - 흉부외과 또는 일반외과 의사 목록 출력하기
출처 : https://school.programmers.co.kr/learn/courses/30/lessons/132203
풀이 : doctor 테이블에서 진료과가 흉부외과(CS)이거나 일반외과(GS)인 의사의 이름, 진료과, 고용일자를 조회하되 그 결과는 고용일자를 기준을 내림차순 정렬, (고용일자 같다면) 이름 기준으로는 오름차순 정렬을 해야 되기 때문에 INORDER BY를 사용했다.

♦️개념 복습 :

  • IN 연산자는 특정 컬럼 값이 주어진 여러 값 중 하나와 일치하는지를 확인하는 연산자이다. 보통 WHERE 컬럼명 IN (값1, 값2, 값3, ...) 이런 식으로 보통 작성하는데 해석하면 컬럼 값이 괄호 안의 값들 중 하나와 일치하면 행을 반환하겠다는 뜻이다. OR 연산자를 여러 번 사용하는 것보다 코드가 간결해진다는 거! 반대로 NOT IN 연산자를 사용하면 특정 데이터를 제외하겠다는 뜻!

20번 - 가격이 제일 비싼 식품의 정보 출력하기
출처 : https://school.programmers.co.kr/learn/courses/30/lessons/131115
풀이 : FOOD_PRODUCT 테이블에서 가격이 제일 비싼 식품의 모든 컬럼을 조회해야되기 때문에 ORDER BY, LIMIT을 사용했다.

♦️개념 복습 :

  • LIMIT은 조회 결과에서 특정 개수만 가져오도록 제한하는 구문으로 보통 페이징 처리, 샘플 데이터 조회, 최상위 데이터 검색 등에 자주 사용된다.
    OFFSET이랑 같이 사용하면 특정 위치부터 데이터를 가져올 수 있게 된다.
    예를 들어 ~from 컬럼명 limit 10 offset 0이면 처음부터 10개를 가져오는 거고, limit 10 offset 10이면 11번째 행부터 5개를 조회해서 반환하겠다는 의미로 해석하면 된다!

🚨주의할 점은 offset은 0부터 카운트하기 때문에 offset 10은 11번째 행부터를 의미하게 된다는 점!


🧑🏻‍💻Python 라이브 세션

어제부터 오늘은 거의 라이브 세션 1~5회차를 복습했다.
뭔가를 이해해야 할 때 글로 정리하면서 이해하는 편인데
이번에도 작동 원리를 하나하나 이해하면서 강의 전부 다시 듣고 쓰면서 복습하다보니 시간이 금방 지나갔다. 특히나 이해하는데 오래 걸렸던 함수는 '이름 없는 lambda함수'!
수업 들을 때는 설명 들으면서도 이해가 안 갔는데 지금은 써보고 동작 순서 계속 복습하니 어느정도 이해가 됐다. 하지만 계속 복습은 해야 할 듯! 그리고 아직 막 와닿지 않는 함수는 이상하게도 rrule...분명 lambda보단 쉬운 함수가 맞는데..

오늘 til에는 노트에 쓴 걸 한번 더 정리해보면서 재복습하려고 했는데 라이브세션 5회차(이상치,결측치) 복습하다보니 벌써 시간이 얼마 남지 않아..오늘은 노트로 복습하며 작동 과정을 이해한 것에 의의를 두고 내일이나 내일 모래 봐서 쭉 정리해보는 걸로 해야겠다.
(좀 쑥쓰러우니 공책 일부만..슬쩍 올려본다)

profile
매일 한 걸음, 데이터 분석 실무자로 성장하는 기록

0개의 댓글

관련 채용 정보