CodeKata

SQL

45번 다시 풀고 팀 활동

  • 작성한 쿼리
SELECT
  member_id
  , member_name
  , gender
  , DATE_FORMAT(date_of_birth, '%Y-%m-%d') AS date_of_birth
FROM
  member_profile
WHERE
  MONTH(date_of_birth) = 3
  AND gender = 'W'
  AND tlno IS NOT NULL
ORDER BY
  member_id ASC
;

86. Average Time of Process per Machine

  • 작성한 쿼리
WITH start_timestamp AS (
  SELECT
    *
  FROM
    activity
  WHERE
    activity_type = 'start'
)
, end_timestamp AS (
  SELECT
    *
  FROM
    activity
  WHERE
    activity_type = 'end'
)
, process_timestamp AS (
  SELECT
    st.machine_id
    , et.timestamp - st.timestamp AS process_t
  FROM
    start_timestamp st
    JOIN end_timestamp et
    USING(machine_id, process_id)    
)
SELECT
  machine_id
  , ROUND(AVG(process_t), 3) AS processing_time
FROM
  process_timestamp
GROUP BY
  machine_id
;

87. Employee Bonus

  • 작성한 쿼리
SELECT
  e.name
  , b.bonus
FROM
  employee e
  LEFT JOIN bonus b
  USING(empId)
WHERE
  b.bonus IS NULL
  OR b.bonus < 1000
;

88. Students and Examinations

  • 작성한 쿼리
WITH subjects_examinations AS (
  SELECT
    sb.subject_name
    , ex.student_id
    , count(*) AS attended_exams
  FROM
    subjects sb
    LEFT JOIN examinations ex
    USING(subject_name)
  GROUP BY
    sb.subject_name
    , ex.student_id    
)
, students_subjects AS(
  SELECT
    *
  FROM
    students
    JOIN subjects
)
SELECT
   ss.student_id
   , student_name
   , ss.subject_name
   , IFNULL(attended_exams, 0) AS attended_exams
FROM
  students_subjects ss
  LEFT JOIN subjects_examinations se
  USING(student_id, subject_name)
ORDER BY
   ss.student_id
   , ss.subject_name
;

Python

28. 없는 숫자 더하기

  • 작성한 코드
def solution(numbers):
    answer = 0
    for i in range(0,10):
        if i in numbers:
            pass
        else:
            answer+=i
    return answer
def solution(numbers):
    return 45 - sum(numbers)

참고할 만한 다른 코드

  1. lambda
solution = lambda x: sum(range(10)) - sum(x)
  1. not in
def solution(numbers):
    answer=0
    for i in range(1,10):
        if i not in numbers:
            answer += i
    return answer
  1. remove
def solution(numbers):
    answer = 0
    a = [x for x in range(1,10)]

    for i in numbers:
        for j in a:
            if i == j:
                a.remove(j)

    for x in a:
        answer += x

    return answer

팀 과제 주제 선정

내가 선택한 주제

  1. [스포츠] NBA 데이터 분석

    • 주제 선정 이유
      • NBA는 이미 Data science를 이용한 농구 분석 및 컨설팅이 활발하게 진행되고 있어(참고) 데이터 분석의 힘을 잘 보여줄 수 있는 분야라고 생각했기 때문
    • 프로젝트명: 데이터 분석의 최종 목표와 분석 내용을 알 수 있도록 함축적으로 기재
    • 프로젝트 목표: 프로젝트의 필요성, 분석 방법, 목표, 기대 성과를 하나의 문장으로 요약
      • 농구에서 화려한 부분들은 슛, 덩크, 드리블, 어시스트 등 여러가지가 있는데 왜 리바운드를 강조했을까? → 데이터로 직접 확인해보고 싶음
    • 프로젝트 핵심 내용: 데이터 분석 프로젝트의 내용을 분석 방법, 분석 흐름을 나타내도록 작성
  2. [게임] TFT(LOL) 게임 데이터 분석

    • 주제 선정 이유

      • 게임 도메인에 관심 있는 조원이 많음(보라님 빼고 다)
      • 다른 프로젝트들은 사람의 행동이 먼저 일어나고 그걸 데이터화(수치화)했는데 게임은 데이터로 존재하는 걸 사람들이 이리저리 움직인 거라서 데이터와 유저 행동 사이의 오차가 적을 것 같음
    • 프로젝트명: 데이터 분석의 최종 목표와 분석 내용을 알 수 있도록 함축적으로 기재

    • 프로젝트 목표: 프로젝트의 필요성, 분석 방법, 목표, 기대 성과를 하나의 문장으로 요약

    • 프로젝트 핵심 내용: 데이터 분석 프로젝트의 내용을 분석 방법, 분석 흐름을 나타내도록 작성

회의 후 최종 선정된 주제

  • TFT(LOL) 게임 데이터 분석
    • 주제 선정 이유
      • 게임 도메인에 관심이 많음
      • 데이터와 행동 사이의 오차가 적을 것 같아서 분석이 용이하다고 판단함
      • 다른 주제에 비해 직접 실행하고 접근할 수 있음
    • 프로젝트명: 다양한 맛으로 즐기는 TFT 모바일 31
    • 프로젝트 목표: 티어별 랭크게임 분석으로 게임의 밸런스를 최적화하여 유저들의 플레이 경험을 개선
    • 프로젝트 핵심 내용
      1) 티어별 게임당 캐릭터/아이템 이용 통계
      2) 티어별 게임 스타일 분석 비교 → 티어별 게임 특징을 확인해 보고 높은 티어의 게임 특징을 제안함

팀 프로젝트 분석

그랜드마스터 분석

아티클 스터디

데이터 기반 의사결정의 장점

회고

  • 일요일이 시험이라 다른 일에 집중이 잘 안 된다😥
profile
2 B R 0 2 B

0개의 댓글

Powered by GraphCDN, the GraphQL CDN