SELECT
he.emp_no
, emp_name
, CASE
WHEN AVG(score) >= 96 THEN 'S'
WHEN AVG(score) >= 90 THEN 'A'
WHEN AVG(score) >= 80 THEN 'B'
ELSE 'C'
END AS grade
, CASE
WHEN AVG(score) >= 96 THEN ROUND(sal * 0.2)
WHEN AVG(score) >= 90 THEN ROUND(sal * 0.15)
WHEN AVG(score) >= 80 THEN ROUND(sal * 0.1)
ELSE 0
END AS bonus
FROM
hr_employees he
JOIN hr_grade hg
USING(emp_no)
GROUP BY
he.emp_no
ORDER BY
he.emp_no
;
WITH average_score AS (
SELECT
emp_no
, AVG(score) AS avg_score
FROM
hr_grade
GROUP BY
emp_no
)
SELECT
e.emp_no
, emp_name
, (CASE
WHEN avg_score >= 96 THEN 'S'
WHEN avg_score >= 90 THEN 'A'
WHEN avg_score >= 80 THEN 'B'
ELSE 'C'
END) AS grade
, SAL * (CASE
WHEN avg_score >= 96 THEN 0.2
WHEN avg_score >= 90 THEN 0.15
WHEN avg_score >= 80 THEN 0.1
ELSE 0
END) AS bonus
FROM
hr_employees e
JOIN average_score a
USING(emp_no)
GROUP BY
e.emp_no
ORDER BY
e.emp_no
;
with GRADE as (
select EMP_NO,
(case when avg(SCORE) >= 96 then 'S'
when avg(SCORE) >= 90 then 'A'
when avg(SCORE) >= 80 then 'B'
else 'C' end ) as GRADE,
(case when avg(SCORE) >= 96 then 0.2
when avg(SCORE) >= 90 then 0.15
when avg(SCORE) >= 80 then 0.1
else 0 end ) as BONUS
from HR_GRADE
group by EMP_NO)
select e.EMP_NO, e.EMP_NAME, g.GRADE, g.BONUS * e.SAL as BONUS
from HR_EMPLOYEES e join GRADE g on e.EMP_NO = g.EMP_NO
order by e.EMP_NO asc;
def solution(id_list, report, k):
answer = []
# 중복 신고 제거
report_unique = list(set(report))
# id 신고 당한 횟수 저장용 dict
id_dict = {x:0 for x in id_list}
# k번 이상 신고당한 이용자용 list
gotcha = []
for i in report_unique:
# 신고 당한 id 카운트
id_dict[i.split(' ')[1]] += 1
for i in report_unique:
get_id = i.split(' ')
if id_dict[get_id[1]] >= k: # k번 이상 신고당한 id였을 경우
gotcha.append(get_id[0]) # 결과 메일을 위해 신고자 id 추가
for get_mail in id_list:
answer.append(gotcha.count(get_mail)) # 메일 개수 카운트
return answer
def solution(id_list, report, k):
answer = [0] * len(id_list)
reports = {x : 0 for x in id_list}
for r in set(report):
reports[r.split()[1]] += 1
for r in set(report):
if reports[r.split()[1]] >= k:
answer[id_list.index(r.split()[0])] += 1
return answer
from collections import defaultdict
def solution(id_list, report,k):
answer = []
# 중복 신고 제거
report = list(set(report))
# user별 신고한 id 저장
user = defaultdict(set)
# user별 신고당한 횟수 저장
cnt = defaultdict(int)
for r in report:
# report의 첫번째 값은 신고자id, 두번째 값은 신고당한 id
a,b = r.split()
# 신고자가 신고한 id 추가
user[a].add(b)
# 신고당한 id의 신고 횟수 추가
cnt[b] += 1
for i in id_list:
result = 0
# user가 신고한 id가 k번 이상 신고 당했으면, 받을 메일 추가
for u in user[i]:
if cnt[u]>=k:
result +=1
answer.append(result)
return answer
데이터 수집 2회차
셀레니움 잘못 사용하다가
자기 IP로 웹사이트 접속 차단당하는 거 자주 봤어요.
1회차 다시 풀어보기
2회차 다시 풀어보기
3회차 다시 풀어보기
4회차 다시 풀어보기