티스토리 뷰
그분이 교육 전략을 잡기 위해서 직원들의 근속년수(년단위 소수점형태로 )을 달라고 하셨다. 그런데 자주사용하던 게 아니라 인터넷 서치해보니 datediff를 사용하면 된다고.. 생각해보면 날짜차이값 함수 찾고, 소수점 되는 방안 찾고, 1개 데이터 쿼리해보고, 전체 직원으로 조건 확대하는 순을 하면 될 것 같다.
1) 날짜 차이값함수 : datediff (함수 보기)
| select DATEDIFF(year,getdate()-365,getdate()) as '1년전', DATEDIFF(year,getdate()-365-180,getdate()) as '1.5년전' |

그런데 소수점이 안되네. 이런 기준을 월로 바꾸어 보면
| select DATEDIFF(month,getdate()-365,getdate()) as '1년전', DATEDIFF(month,getdate()-365-180,getdate()) as '1.5년전' |

이를 12개월로 나누면..
| select DATEDIFF(month,getdate()-365,getdate())/12 as '1년전', DATEDIFF(month,getdate()-365-180,getdate())/12 as '1.5년전' |

앗 똑같네.
2) 소숫점 방안 : convert (함수 설명)
평소 하던 convert로 씌워주었더니
| select convert(float,DATEDIFF(month,getdate()-365,getdate())/12) as '1년전', convert(float,DATEDIFF(month,getdate()-365-180,getdate())/12) as '1.5년전' |

왜 소수점이 아니지..!!😕😕😕😕😕😕😕😕😕😕😕
아 형변환후 나누면 ??
| select convert(float,DATEDIFF(month,getdate()-365,getdate()))/12 as '1년전', convert(float,DATEDIFF(month,getdate()-365-180,getdate()))/12 as '1.5년전' |

참고로 int로 하면 결과 동일함

그런데 2년 직전 (즉 오늘 기준 20년 7월 12일)으로 보면 반올림해버리네 안되는데...

찾아보니 decimal이 낫다고 하시네
| select convert(decimal,DATEDIFF(month,getdate()-365-360,getdate()))/12 as '2년 직전',convert(decimal,DATEDIFF(month,getdate()-365-324,getdate()))/12 as '1.9년전' |

아직 5일 남았는데 반올림 하네
3) 반올림 방지 및 버림 처리 (함수 설명)
4 ) 최종 쿼리
| select avg(convert(decimal,DATEDIFF(month,reg_dt,getdate()))/12) as '평균근속년수' from employee (nolock) |

참조
https://docs.microsoft.com/KO-kr/sql/t-sql/functions/datediff-transact-sql?view=sql-server-ver15
DATEDIFF(Transact-SQL) - SQL Server
DATEDIFF 함수의 Transact-SQL 참조입니다. datepart를 기준으로 시작 날짜와 종료 날짜 사이의 숫자 차이를 반환합니다.
docs.microsoft.com
CAST 및 CONVERT(Transact-SQL) - SQL Server
CAST 및 CONVERT 함수의 Transact-SQL 참조입니다. 해당 함수는 특정 데이터 형식의 식을 다른 데이터 형식으로 변환합니다.
docs.microsoft.com
https://docs.microsoft.com/ko-kr/sql/t-sql/functions/round-transact-sql?view=sql-server-ver15
ROUND(Transact-SQL) - SQL Server
ROUND(Transact-SQL)
docs.microsoft.com
'데이터엔지니어 > SQL' 카테고리의 다른 글
| oracle 쿼리시 declare 사용해보기 (0) | 2023.08.23 |
|---|---|
| SQL쿼리-07조인 (0) | 2020.02.17 |
| SQL 쿼리05-집계 (0) | 2020.02.16 |
| SQL 쿼리04-데이터 조작 (0) | 2020.02.15 |
| SQL 쿼리03-정렬 (0) | 2020.02.15 |
- Total
- Today
- Yesterday
- 무료강의
- 책줍기2025
- TestRail
- 원격플레이팅
- 현실과초현실의경계
- 버블역사
- 리더십
- 리더쉽
- 퍼플렉시티
- 신뢰성장
- 패스트캠퍼스
- 테스트자동화
- 제미나이
- 버블새로운부의지도
- 내 안의 숨은 이야기를 찾아 쓰는 법
- 미니어처요리
- 이한결
- 바이브코딩
- 패스트캠퍼스 기업교육
- AI영상제작
- LinkedinLearning
- 위생조리컨셉
- AI투자
- 능력봉인
- 직장인간관계
- ChatGPT
- 기억조작
- 김영하
- 파이썬
- 내눈을보면안돼
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 | 31 |

