안녕하세요.. 오라클 DB SQL 쿼리 질문 드립니다..
=============
(문제) 평균나이가 20대인 그룹만 보고 싶습니다. 아이돌 그룹 이름, 그룹 멤버들의 평균나이를 출력하세요..
(단, 평균 나이가 어린 그룹순으로...)
아래 그림은 현재 IDOL_MEMBER 테이블 입니다..
해도해도 안되어 질문을 드립니다..
죄송합니다..
만 나이 인가요?
만 나이로 해도 되고.. 만 나이가 아니여도 괜챦습니다.. 답변 고맙습니다.
WITH idol_member AS
(
SELECT 'BTS' idol_group_nm, '진' stage_member_nm, '김석진' real_member_nm, '19921204' birthday, 'KOR' nationality_cd, 1 sex_cd FROM dual
UNION ALL SELECT 'BTS', '슈가' , '민윤기', '19930309', 'KOR', 1 FROM dual
UNION ALL SELECT 'BTS', '제이홉', '정호석', '19940218', 'KOR', 1 FROM dual
UNION ALL SELECT 'BTS', 'RM' , '김남준', '19940912', 'KOR', 1 FROM dual
UNION ALL SELECT 'BTS', '지민' , '박지민', '19951013', 'KOR', 1 FROM dual
UNION ALL SELECT 'BTS', '뷔' , '김태형', '19951230', 'KOR', 1 FROM dual
UNION ALL SELECT 'BTS', '정국' , '진정국', '19970901', 'KOR', 1 FROM dual
)
SELECT idol_group_nm
, TRUNC(AVG(TO_CHAR(sysdate, 'yyyy') - SUBSTR(birthday, 1, 4) + 1), 2) age_kor
, TRUNC(AVG(FLOOR(MONTHS_BETWEEN(TRUNC(sysdate), TO_DATE(birthday, 'yyyymmdd')) / 12)), 2) age_man
FROM idol_member
GROUP BY idol_group_nm
HAVING TRUNC(AVG(TO_CHAR(sysdate, 'yyyy') - SUBSTR(birthday, 1, 4) + 1), -1) = 20
--HAVING TRUNC(AVG(FLOOR(MONTHS_BETWEEN(TRUNC(sysdate), TO_DATE(birthday, 'yyyymmdd')) / 12)), -1) = 20
;
와~~~ 마농님.. 넘넘 고맙습니다~~~ 좋은 하루 되세요~~~^^