CodeKata
SQL
프로그래머스: 조건에 맞는 사원 정보 조회하기
WITH year_score AS (
SELECT
emp_no
, SUM(score) AS score
FROM
hr_grade
GROUP BY
emp_no
)
, rank_score AS (
SELECT
he.emp_no
, emp_name
, position
, email
, score
, RANK() OVER (ORDER BY score DESC) AS rnk
FROM
hr_employees he
JOIN year_score ys
USING(emp_no)
)
SELECT
score
, emp_no
, emp_name
, position
, email
FROM
rank_score
WHERE
rnk = 1
;
참고할 만한 다른 풀이
SELECT
SUM(SCORE) SCORE,
E.EMP_NO,
EMP_NAME, POSITION,
EMAIL
FROM
HR_EMPLOYEES E JOIN HR_GRADE G
ON E.EMP_NO = G.EMP_NO
GROUP BY E.EMP_NO
HAVING
SUM(SCORE) = (SELECT MAX(R.RESULT)
FROM (SELECT SUM(SCORE) RESULT , EMP_NO
FROM HR_GRADE
GROUP BY EMP_NO) AS R
)
특강
데이터 수집 1회차
- 최종 프로젝트 관련 팁
- 먼저 어떤 문제를 풀지 리스트업하고 데이터를 수집하거나 불러오는 것을 추천합니다!
강의
스파크 1주차
최종 프로젝트 준비
compas 공모전 관련
def group_and_merge_geometry(df, group_keys, agg_columns):
grouped = df.groupby(group_keys, as_index=False).agg(agg_columns)
geometry_data = df[group_keys + ['geometry']].drop_duplicates()
merged = grouped.merge(geometry_data, on=group_keys)
return merged
grid_columns = ['SPO_NO_CD', 'SECT_CD']
agg_columns = {
'20~29': 'sum', '30~39': 'sum', '40~49': 'sum',
'50~59': 'sum', '60~69': 'sum', '70~': 'sum',
'man': 'sum', 'woman': 'sum', 'total': 'sum'
}
hwaseong_grouped = group_and_merge_geometry(hwaseong_1, grid_columns, agg_columns)
hanam_grouped = group_and_merge_geometry(hanam_1, grid_columns, agg_columns)
회고
- 분석에 필요한 데이터셋 찾는 것부터가 문제구나
- 특히나 게임 데이터는 비공개 정보가 너무 많아서 난항을 겪는 중😥
- ChatGPT는 신이야!
- 함수를 만들면 여러 번 적을 필요가 없음(함수 불러오기만 하면 됨)
- 그룹화에 필요한 내용을 길게 적지 않고 따로 변수에 담으면 더 깔끔함