5시간코딩
[그룹함수] employees 테이블에서 입사일이 12년이 넘은 사원에 대하여, 입사요일별로 그룹짓고, 요일순으로 정렬하세요. 본문
[그룹함수] employees 테이블에서 입사일이 12년이 넘은 사원에 대하여, 입사요일별로 그룹짓고, 요일순으로 정렬하세요.
5시간코딩 2019. 4. 11. 02:431. oracle
1)
select day,sumsal
from(
select to_char(hire_date,'d') d, to_char(hire_date,'day') day, sum(salary) sumsal
from employees
where sysdate - hire_date >= 12*365
group by to_char(hire_date,'day'), to_char(hire_date,'d')
order by to_char(hire_date,'d')
);
2)
pivot 후 unpivot 하는 방법도 있음
2. r
1)
emp<-read.csv("c:/data/employees.csv",header=T,stringsAsFactors=F)
emp$HIRE_DATE<-as.Date(emp$HIRE_DATE,format="%Y-%m-%d")
emp$WEEKDAYS<-factor(format(as.Date(emp$HIRE_DATE,format="%Y-%m-%d"),"%a"),
levels=c('월','화','수','목','금','토','일'),ordered=T)
emp<-emp[Sys.Date()-emp$HIRE_DATE>=12*365,]
emp<-emp[order(emp$WEEKDAYS),]
library(plyr)
result<-ddply(emp,'WEEKDAYS',summarise,sumsal=sum(SALARY))
2)
result<-aggregate(SALARY~WEEKDAYS,emp,sum)
3)
library(dplyr)
emp%>%
filter((Sys.Date()-as.Date(HIRE_DATE,format="%Y-%m-%d"))>=12)%>%
mutate(WEEKDAYS = factor(format(HIRE_DATE,'%a'),
levels=c('월','화','수','목','금','토','일'),ordered=T))%>%
group_by(WEEKDAYS)%>%
summarise(sumsal = sum(SALARY))%>%
arrange(WEEKDAYS)
3. python
1)
import pandas as pd
from datetime import datetime, date, time
emp=pd.read_csv("c:/data/employees.csv")
emp['HIRE_DATE']=pd.to_datetime(emp['HIRE_DATE'])
emp['WEEKDAY']=emp['HIRE_DATE'].dt.dayofweek #혹은 weekdays
emp=emp.loc[[(datetime.today() - i).days > 12*365 for i in emp['HIRE_DATE']],]
emp.info()
result = emp['SALARY'].groupby(emp['WEEKDAY']).sum()
result.index = ['월','화','수','목','금','토','일']
result
2)
import pandas as pd
from datetime import datetime, date, time
emp = pd.read_csv("c:/data/employees.csv")
emp['HIRE_DATE']=[datetime.strptime(i,'%Y-%m-%d') for i in emp['HIRE_DATE']]
emp = emp.loc[[(datetime.today()-i).days>=12*365 for i in emp['HIRE_DATE']],]
emp['WEEKDAY']=[i.weekday() for i in emp['HIRE_DATE']]
emp=emp['SALARY'].groupby(emp['WEEKDAY']).sum()
emp.index = ['일','월','화','수','목','금','토']
emp['이사']=emp['일']
emp=emp.drop(['일'],axis=0)
emp.index=['월','화','수','목','금','토','일']
#datetime.today().weekday() 일(0),월(1)...
'문제풀기 > 테이블 조작 관련 문제' 카테고리의 다른 글
[분석함수] department_id 별로 salary의 누적합을 구하여라 (0) | 2019.04.11 |
---|---|
[NULL함수] null갯수, null수정 (0) | 2019.04.11 |
[그룹함수] employees 테이블에서 salary의 합이 가장 큰 department_id를 구하세요. (0) | 2019.04.11 |
[그룹함수] employees 테이블에서 department_id와 job_id를 기준으로 salary를 그룹지으세요. (0) | 2019.04.11 |
[문자함수]문자열을 정재하세요 (0) | 2019.04.06 |