16일차

Suhyeon Lee·2024년 10월 23일
0

CodeKata

SQL

68. 저자 별 카테고리 별 매출액

  • 작성 쿼리
WITH book_author AS (
  SELECT
    book_id
    , category
    , b.author_id
    , price
    , author_name
  FROM
    book b
    JOIN author a
    USING(author_id)
), sales_b_a AS (
  SELECT
    *
    , sales * price AS total_sales
  FROM
    book_sales s
    JOIN book_author ba
    USING(book_id)
  WHERE 
    DATE(sales_date) 
    BETWEEN '2022-01-01' AND '2022-01-31'
)
SELECT
  author_id
  , author_name
  , category
  , SUM(total_sales) AS sales
FROM
  sales_b_a
GROUP BY
  author_id
  , author_name
  , category
ORDER BY
  author_id
  , category DESC
;

참고할 만한 다른 풀이

SELECT A.AUTHOR_ID, A.AUTHOR_NAME, B.CATEGORY, SUM(SALES*PRICE) AS TOTAL_SALES
FROM BOOK_SALES S
JOIN BOOK B 
ON S.BOOK_ID = B.BOOK_ID
JOIN AUTHOR A
ON B.AUTHOR_ID = A.AUTHOR_ID
WHERE YEAR(SALES_DATE) = '2022' AND MONTH(SALES_DATE) = '1'
GROUP BY B.AUTHOR_ID, B.CATEGORY
ORDER BY A.AUTHOR_ID ASC, B.CATEGORY DESC

→ JOIN 두 번 & 2022년 1월 조건 처리 방식
→ 여기서 WHERE절 조건을 WHERE SALES_DATE LIKE '2022-01%'WHERE DATE_FORMAT(SALES_DATE, '%Y-%m') IN ('2022-01')로 해도 됨

Python

19. 정수 제곱근 판별

  • 작성 코드
def solution(n):
    answer = 0
    root = n**(1/2)
    if int(root) == root:
        answer = (root+1)**2
    else:
        answer = -1
    return answer

참고할 만한 다른 풀이

def solution(n):
    sqrt = n ** (1/2)
    if sqrt % 1 == 0:
        return (sqrt + 1) ** 2
    return -1

→ 정수 확인을 % 1 == 0으로 처리

def solution(n):
    return n == int(n**.5)**2 and int(n**.5+1)**2 or -1

→ return에 and와 or을 쓸 수 있구나..
→ 삼항연산자라고 함

  • 삼항연산자
    • 조건에 일치하는지 아닌지에 따라 값을 다르게 설정하는 연산자
    • 기본적인 모델 예시: int more = (a > b) ? a : b
      • a > b 이면 a 그렇지 않으면 b를 변수 more에 저장하는 구조
def solution(n):
    from math import sqrt
    return -1 if sqrt(n) % 1 else (sqrt(n)+1)**2

→ math에서 sqrt import해서 간단하게 풀기

def solution(n):
    sqrt = pow(n, 0.5)
    return pow(sqrt + 1, 2) if sqrt == int(sqrt) else -1

→ 내장함수 pow() 활용

  • 내장함수 pow(base, exp [, mod] )
    • 밑, 지수, (옵션: 나머지 계산) 을 파라미터로 받을 수 있음
      • cf. math.pow에서는 세번째 옵션 파라미터를 받을 수 없음
    • pow(base, exp, mod) 로 쓰였을 때, 결과는 (base ** exp) % mod 와 동일
      (단, 이때 base, exp는 정수형이어야함)
    • pow의 결과값은 파라미터의 type에 따라 결정

SDL

자연 조인(NATURAL JOIN)
list, array, numpy array

라이브 세션

2회차

파이썬 개인 과제 해설

파이썬 개인 과제

데이터 전처리 & 시각화

Pandas 10분 완성
실습 문제

profile
2 B R 0 2 B

0개의 댓글