오라클 기준으로 연령대를 추출하는 방법이다.
기본적으로 특정 상품이나, 제품을 구매한 연령별 데이터를 추출할 때 사용할 수 있을 것 같다.
사용한 것은 Trunc(), TO_CHAR() 와 date의 연산이다.
첫번째 방법은 다음과 같다.
SELECT age, count(*) AS cnt FROM
(SELECT TRUNC( (sysdate - bm.MEMBER_BIRTH)/365, -1) AS age
FROM B7_MEMBER bm
WHERE member_no IN (SELECT MEMBER_NO FROM B7_ORDER WHERE course_no = 60))
GROUP BY age;
오라클 sql에서는 날짜와 날짜를 빼게 되면 남은 일수를 리턴해주는데 이 값을 365로 나누게 되면 연령이 나오게 된다.
그러니 현재 날짜인 SYSDATE에서 생년월일을 빼고 365로 나눈뒤 TRUNC를 통해 정수 첫째자리까지 절삭을 해주면 끝,
두번째 방법은 다음과 같다.
SELECT trunc((TO_CHAR(SYSDATE, 'YYYY') - TO_CHAR(bm.MEMBER_BIRTH, 'YYYY') ), -1)
FROM B7_MEMBER bm;
TO_CHAR를 사용하게되면 첫번째인자로 들어간 DATE가 두번째 인자인 포맷으로 문자열로 변환을 해주게 된다. 또한 이 문자열을 '-'연산자를 사용하게 되면 연령대를 추출할 수 있게되고 위에 trunc를 동일하게 사용하면 연령대를 추출할 수 있게 된다.