-- "1학기" 첫번째 query내용
SELECT 회원번호 "회원번호",
SUM(학년) "학년",
SUM(총점) "총 점",
SUM(A03월국어) "3월 국어", SUM(A04월국어) "4월 국어",
SUM(A05월국어) "5월 국어", SUM(A06월국어) "6월 국어",
SUM(A07월국어) "7월 국어", SUM(A08월국어) "8월 국어",
SUM(A03월영어) "3월 영어", SUM(A04월영어) "4월 영어",
SUM(A05월영어) "5월 영어", SUM(A06월영어) "6월 영어",
SUM(A07월영어) "7월 영어", SUM(A08월영어) "8월 영어",
SUM(A03월수학) "3월 수학", SUM(A04월수학) "4월 수학",
SUM(A05월수학) "5월 수학", SUM(A06월수학) "6월 수학",
SUM(A07월수학) "7월 수학", SUM(A08월수학) "8월 수학",
SUM(국어횟수) "국어 횟수", SUM(영어횟수) "영어 횟수",
SUM(수학횟수) "수학 횟수",
SUM(국어총점) "국어 총점", SUM(영어총점) "영어 총점",
SUM(수학총점) "수학 총점",
SUM(국어평균) "국어 평균", SUM(영어평균) "영어 평균",
SUM(수학평균) "수학 평균",
SUM(국어횟수) + SUM(영어횟수) + SUM(수학횟수) "총횟수",
ROUND(SUM(총점) / (SUM(국어횟수) + SUM(영어횟수) + SUM(수학횟수)), 2) "총평균",
SUM(TOT),
sum(A3국어), sum(A4국어), sum(A5국어), sum(A6국어), sum(A7국어), sum(A8국어),
sum(A3영어), sum(A4영어), sum(A5영어), sum(A6영어), sum(A7영어), sum(A8영어),
sum(A3수학), sum(A4수학), sum(A5수학), sum(A6수학), sum(A7수학), sum(A8수학),
지점 "지점",
M.MEMBER_NAME "NAME",
BU.BUSINESS_NAME "BNAME",
Z.CITY || ' ' || Z.TOWN "TOWN",
DECODE(INSTR(M.DEL_ADDRESS3, ' ', 1, 2), 0, M.DEL_ADDRESS3,
SUBSTR(M.DEL_ADDRESS3, 1, INSTR(M.DEL_ADDRESS3, ' ', 1, 2)) ) "CITY1",
DECODE(INSTR(M.DEL_ADDRESS3, ' ', 3, 2), 0, ' ',
SUBSTR(SUBSTR(M.DEL_ADDRESS3, INSTR(M.DEL_ADDRESS3, ' ', 3, 2), 50),2,50)) "CITY2",
DECODE(INSTR(B.BRANCH_NAME,'지점'), 0, B.BRANCH_NAME,
SUBSTR(B.BRANCH_NAME, 1, INSTR(B.BRANCH_NAME,'지점') - 1)) "지점1"
FROM (
SELECT 지점, 학년, 회원번호,
TRUNC(((DECODE(SIGN(SUM(TOT) - 6), 1, 6, SUM(TOT)) * 4) * 40) / 100, 0) "TOT",
SUM(총점) / COUNT(회원번호) 총점,
SUM(A03월국어) / COUNT(회원번호) A03월국어, SUM(A04월국어) / COUNT(회원번호) A04월국어,
SUM(A05월국어) / COUNT(회원번호) A05월국어, SUM(A06월국어) / COUNT(회원번호) A06월국어,
SUM(A07월국어) / COUNT(회원번호) A07월국어, SUM(A08월국어) / COUNT(회원번호) A08월국어,
SUM(A03월영어) / COUNT(회원번호) A03월영어, SUM(A04월영어) / COUNT(회원번호) A04월영어,
SUM(A05월영어) / COUNT(회원번호) A05월영어, SUM(A06월영어) / COUNT(회원번호) A06월영어,
SUM(A07월영어) / COUNT(회원번호) A07월영어, SUM(A08월영어) / COUNT(회원번호) A08월영어,
SUM(A03월수학) / COUNT(회원번호) A03월수학, SUM(A04월수학) / COUNT(회원번호) A04월수학,
SUM(A05월수학) / COUNT(회원번호) A05월수학, SUM(A06월수학) / COUNT(회원번호) A06월수학,
SUM(A07월수학) / COUNT(회원번호) A07월수학, SUM(A08월수학) / COUNT(회원번호) A08월수학,
SUM(국어횟수) / COUNT(회원번호) 국어횟수,
SUM(영어횟수) / COUNT(회원번호) 영어횟수,
SUM(수학횟수) / COUNT(회원번호) 수학횟수,
SUM(국어총점) / COUNT(회원번호) 국어총점,
SUM(영어총점) / COUNT(회원번호) 영어총점,
SUM(수학총점) / COUNT(회원번호) 수학총점,
SUM(국어평균) / COUNT(회원번호) 국어평균,
SUM(영어평균) / COUNT(회원번호) 영어평균,
SUM(수학평균) / COUNT(회원번호) 수학평균,
SUM(A3국어) / COUNT(회원번호) A3국어, SUM(A4국어) / COUNT(회원번호) A4국어,
SUM(A5국어) / COUNT(회원번호) A5국어, SUM(A6국어) / COUNT(회원번호) A6국어,
SUM(A7국어) / COUNT(회원번호) A7국어, SUM(A8국어) / COUNT(회원번호) A8국어,
SUM(A3영어) / COUNT(회원번호) A3영어, SUM(A4영어) / COUNT(회원번호) A4영어,
SUM(A5영어) / COUNT(회원번호) A5영어, SUM(A6영어) / COUNT(회원번호) A6영어,
SUM(A7영어) / COUNT(회원번호) A7영어, SUM(A8영어) / COUNT(회원번호) A8영어,
SUM(A3수학) / COUNT(회원번호) A3수학, SUM(A4수학) / COUNT(회원번호) A4수학,
SUM(A5수학) / COUNT(회원번호) A5수학, SUM(A6수학) / COUNT(회원번호) A6수학,
SUM(A7수학) / COUNT(회원번호) A7수학, SUM(A8수학) / COUNT(회원번호) A8수학,
MAX(SEQ) SEQ
FROM (
SELECT 지점 "지점",
SUBSTR(구분, 2, 1) "학년",
회원번호 "회원번호",
구독기간 "TOT",
SUM(총점) "총점",
NVL(SUM(A.T_K03), 0) "A03월국어", NVL(SUM(A.T_K04), 0) "A04월국어",
NVL(SUM(A.T_K05), 0) "A05월국어", NVL(SUM(A.T_K06), 0) "A06월국어",
NVL(SUM(A.T_K07), 0) "A07월국어", NVL(SUM(A.T_K08), 0) "A08월국어",
NVL(SUM(A.T_E03), 0) "A03월영어", NVL(SUM(A.T_E04), 0) "A04월영어",
NVL(SUM(A.T_E05), 0) "A05월영어", NVL(SUM(A.T_E06), 0) "A06월영어",
NVL(SUM(A.T_E07), 0) "A07월영어", NVL(SUM(A.T_E08), 0) "A08월영어",
NVL(SUM(A.T_M03), 0) "A03월수학", NVL(SUM(A.T_M04), 0) "A04월수학",
NVL(SUM(A.T_M05), 0) "A05월수학", NVL(SUM(A.T_M06), 0) "A06월수학",
NVL(SUM(A.T_M07), 0) "A07월수학", NVL(SUM(A.T_M08), 0) "A08월수학",
NVL(SUM(A.C_K), 0) "국어횟수", NVL(SUM(A.C_E), 0) "영어횟수",
NVL(SUM(A.C_M), 0) "수학횟수",
NVL(SUM(A.T_K), 0) "국어총점", NVL(SUM(A.T_E), 0) "영어총점",
NVL(SUM(A.T_M), 0) "수학총점",
DECODE(NVL(SUM(A.C_K), 0), 0, 0, ROUND(SUM(A.T_K) / SUM(A.C_K), 1)) "국어평균",
DECODE(NVL(SUM(A.C_E), 0), 0, 0, ROUND(SUM(A.T_E) / SUM(A.C_E), 1)) "영어평균",
DECODE(NVL(SUM(A.C_M), 0), 0, 0, ROUND(SUM(A.T_M) / SUM(A.C_M), 1)) "수학평균",
decode(SUM(A.T_K03), 0, 999, 0) "A3국어", decode(SUM(A.T_K04), 0, 999, 0) "A4국어",
decode(SUM(A.T_K05), 0, 999, 0) "A5국어", decode(SUM(A.T_K06), 0, 999, 0) "A6국어",
decode(SUM(A.T_K07), 0, 999, 0) "A7국어", decode(SUM(A.T_K08), 0, 999, 0) "A8국어",
decode(SUM(A.T_E03), 0, 999, 0) "A3영어", decode(SUM(A.T_E04), 0, 999, 0) "A4영어",
decode(SUM(A.T_E05), 0, 999, 0) "A5영어", decode(SUM(A.T_E06), 0, 999, 0) "A6영어",
decode(SUM(A.T_E07), 0, 999, 0) "A7영어", decode(SUM(A.T_E08), 0, 999, 0) "A8영어",
decode(SUM(A.T_M03), 0, 999, 0) "A3수학", decode(SUM(A.T_M04), 0, 999, 0) "A4수학",
decode(SUM(A.T_M05), 0, 999, 0) "A5수학", decode(SUM(A.T_M06), 0, 999, 0) "A6수학",
decode(SUM(A.T_M07), 0, 999, 0) "A7수학", decode(SUM(A.T_M08), 0, 999, 0) "A8수학",
SEQ
FROM
(SELECT C.BRANCH 지점,
P.MEMBER_ID 회원번호,
DECODE(P.SUBJECT, '10', SUM(MONTHS_BETWEEN(
DECODE(SIGN( MONTHS_BETWEEN(TO_DATE(TO_CHAR(SYSDATE, 'YYYY') || '0801', 'YYYYMMDD'), TO_DATE(REGULAR_TO, 'YYYYMMDD'))
), 1, TO_DATE(REGULAR_TO, 'YYYYMMDD'), TO_DATE(TO_CHAR(SYSDATE, 'YYYY') || '0801', 'YYYYMMDD')),
DECODE(SIGN( MONTHS_BETWEEN(TO_DATE(SUBSCRIPTION_OPEN, 'YYYYMMDD'), TO_DATE(TO_CHAR(SYSDATE, 'YYYY') || '0301', 'YYYYMMDD'))
), 1, TO_DATE(SUBSCRIPTION_OPEN, 'YYYYMMDD'), TO_DATE(TO_CHAR(SYSDATE, 'YYYY') || '0301', 'YYYYMMDD'))) + 1) / COUNT(*),
'20', SUM(MONTHS_BETWEEN(
DECODE(SIGN( MONTHS_BETWEEN(TO_DATE(TO_CHAR(SYSDATE, 'YYYY') || '0801', 'YYYYMMDD'), TO_DATE(REGULAR_TO, 'YYYYMMDD'))
), 1, TO_DATE(REGULAR_TO, 'YYYYMMDD'), TO_DATE(TO_CHAR(SYSDATE, 'YYYY') || '0801', 'YYYYMMDD')),
DECODE(SIGN( MONTHS_BETWEEN(TO_DATE(SUBSCRIPTION_OPEN, 'YYYYMMDD'), TO_DATE(TO_CHAR(SYSDATE, 'YYYY') || '0301', 'YYYYMMDD'))
), 1, TO_DATE(SUBSCRIPTION_OPEN, 'YYYYMMDD'), TO_DATE(TO_CHAR(SYSDATE, 'YYYY') || '0301', 'YYYYMMDD'))) + 1) / COUNT(*),
'30', SUM(MONTHS_BETWEEN(
DECODE(SIGN( MONTHS_BETWEEN(TO_DATE(TO_CHAR(SYSDATE, 'YYYY') || '0801', 'YYYYMMDD'), TO_DATE(REGULAR_TO, 'YYYYMMDD'))
), 1, TO_DATE(REGULAR_TO, 'YYYYMMDD'), TO_DATE(TO_CHAR(SYSDATE, 'YYYY') || '0801', 'YYYYMMDD')),
DECODE(SIGN( MONTHS_BETWEEN(TO_DATE(SUBSCRIPTION_OPEN, 'YYYYMMDD'), TO_DATE(TO_CHAR(SYSDATE, 'YYYY') || '0301', 'YYYYMMDD'))
), 1, TO_DATE(SUBSCRIPTION_OPEN, 'YYYYMMDD'), TO_DATE(TO_CHAR(SYSDATE, 'YYYY') || '0301', 'YYYYMMDD'))) + 1) / COUNT(*)) 구독기간,
P.GBN 구분,
SUM(P.POINT) 총점,
DECODE(SUBSTR(P.YYMM,3,2), '03', DECODE(P.SUBJECT, '10', DECODE(COUNT(*), 0 , 0, ROUND(SUM(P.POINT) / COUNT(*), 2)))) T_K03, /* 3월 */
DECODE(SUBSTR(P.YYMM,3,2), '04', DECODE(P.SUBJECT, '10', DECODE(COUNT(*), 0 , 0, ROUND(SUM(P.POINT) / COUNT(*), 2)))) T_K04, /* 4월 */
DECODE(SUBSTR(P.YYMM,3,2), '05', DECODE(P.SUBJECT, '10', DECODE(COUNT(*), 0 , 0, ROUND(SUM(P.POINT) / COUNT(*), 2)))) T_K05, /* 5월 */
DECODE(SUBSTR(P.YYMM,3,2), '06', DECODE(P.SUBJECT, '10', DECODE(COUNT(*), 0 , 0, ROUND(SUM(P.POINT) / COUNT(*), 2)))) T_K06, /* 6월 */
DECODE(SUBSTR(P.YYMM,3,2), '07', DECODE(P.SUBJECT, '10', DECODE(COUNT(*), 0 , 0, ROUND(SUM(P.POINT) / COUNT(*), 2)))) T_K07, /* 7월 */
DECODE(SUBSTR(P.YYMM,3,2), '08', DECODE(P.SUBJECT, '10', DECODE(COUNT(*), 0 , 0, ROUND(SUM(P.POINT) / COUNT(*), 2)))) T_K08, /* 8월 */
DECODE(SUBSTR(P.YYMM,3,2), '03', DECODE(P.SUBJECT, '20', DECODE(COUNT(*), 0 , 0, ROUND(SUM(P.POINT) / COUNT(*), 2)))) T_E03, /* 3월 */
DECODE(SUBSTR(P.YYMM,3,2), '04', DECODE(P.SUBJECT, '20', DECODE(COUNT(*), 0 , 0, ROUND(SUM(P.POINT) / COUNT(*), 2)))) T_E04, /* 4월 */
DECODE(SUBSTR(P.YYMM,3,2), '05', DECODE(P.SUBJECT, '20', DECODE(COUNT(*), 0 , 0, ROUND(SUM(P.POINT) / COUNT(*), 2)))) T_E05, /* 5월 */
DECODE(SUBSTR(P.YYMM,3,2), '06', DECODE(P.SUBJECT, '20', DECODE(COUNT(*), 0 , 0, ROUND(SUM(P.POINT) / COUNT(*), 2)))) T_E06, /* 6월 */
DECODE(SUBSTR(P.YYMM,3,2), '07', DECODE(P.SUBJECT, '20', DECODE(COUNT(*), 0 , 0, ROUND(SUM(P.POINT) / COUNT(*), 2)))) T_E07, /* 7월 */
DECODE(SUBSTR(P.YYMM,3,2), '08', DECODE(P.SUBJECT, '20', DECODE(COUNT(*), 0 , 0, ROUND(SUM(P.POINT) / COUNT(*), 2)))) T_E08, /* 8월 */
DECODE(SUBSTR(P.YYMM,3,2), '03', DECODE(P.SUBJECT, '30', DECODE(COUNT(*), 0 , 0, ROUND(SUM(P.POINT) / COUNT(*), 2)))) T_M03, /* 3월 */
DECODE(SUBSTR(P.YYMM,3,2), '04', DECODE(P.SUBJECT, '30', DECODE(COUNT(*), 0 , 0, ROUND(SUM(P.POINT) / COUNT(*), 2)))) T_M04, /* 4월 */
DECODE(SUBSTR(P.YYMM,3,2), '05', DECODE(P.SUBJECT, '30', DECODE(COUNT(*), 0 , 0, ROUND(SUM(P.POINT) / COUNT(*), 2)))) T_M05, /* 5월 */
DECODE(SUBSTR(P.YYMM,3,2), '06', DECODE(P.SUBJECT, '30', DECODE(COUNT(*), 0 , 0, ROUND(SUM(P.POINT) / COUNT(*), 2)))) T_M06, /* 6월 */
DECODE(SUBSTR(P.YYMM,3,2), '07', DECODE(P.SUBJECT, '30', DECODE(COUNT(*), 0 , 0, ROUND(SUM(P.POINT) / COUNT(*), 2)))) T_M07, /* 7월 */
DECODE(SUBSTR(P.YYMM,3,2), '08', DECODE(P.SUBJECT, '30', DECODE(COUNT(*), 0 , 0, ROUND(SUM(P.POINT) / COUNT(*), 2)))) T_M08, /* 8월 */
DECODE(P.SUBJECT, '10', COUNT(*)) C_K,
DECODE(P.SUBJECT, '20', COUNT(*)) C_E,
DECODE(P.SUBJECT, '30', COUNT(*)) C_M,
DECODE(P.SUBJECT, '10', SUM(P.POINT)) T_K,
DECODE(P.SUBJECT, '20', SUM(P.POINT)) T_E,
DECODE(P.SUBJECT, '30', SUM(P.POINT)) T_M,
C.SEQ SEQ
FROM G05_POINT P, G02_CONTACT@MIS C
WHERE P.YYMM BETWEEN TO_CHAR(SYSDATE, 'YY') || '03' AND TO_CHAR(SYSDATE, 'YY') || '08'
AND C.SUBSCRIPTION_OPEN <= TO_CHAR(SYSDATE, 'YYYY') || '0801'
AND C.REGULAR_TO >= TO_CHAR(SYSDATE, 'YYYY') || '0301'
AND SUBSTR(C.GBN, 2, 2) = P.GBN
AND C.MEMBER_ID in (
'1999041530', '1999041780', '1999042002', '1999042064', '1999042304', '1999042307', '1999042474', '1999042837', '1999043008', '1999043573', '1999043640', '1999044817', '1999044922', '1999045739', '1999045740','1999045908', '1999050416', '1999057929', '1999060547', '1999060551', '1999064490', '1999065178', '1999065181', '2000000868', '2000004068', '2000009615'
)
AND P.MEMBER_ID in (
'1999041530', '1999041780', '1999042002', '1999042064', '1999042304', '1999042307', '1999042474', '1999042837', '1999043008', '1999043573', '1999043640', '1999044817', '1999044922', '1999045739', '1999045740','1999045908', '1999050416', '1999057929', '1999060547', '1999060551', '1999064490', '1999065178', '1999065181', '2000000868', '2000004068', '2000009615'
)
AND C.BRANCH BETWEEN :MEMA AND :MEMZ
AND P.INSERT_YYMM < TO_CHAR(SYSDATE, 'YYYY') || '0901'
AND C.MEMBER_ID = P.MEMBER_ID
GROUP BY C.BRANCH, P.MEMBER_ID, P.SUBJECT, SUBSTR(P.YYMM,3,2), C.SEQ, P.GBN ) A
GROUP BY 지점, SUBSTR(구분, 2, 1), 회원번호, 구독기간, SEQ)
GROUP BY 지점, 학년, 회원번호
) A, G01_MEMBER@MIS M, G02_CONTACT@MIS C, G90_ZIPCODE@MIS Z, G13_BUSINESS@MIS BU, G92_BRANCH@MIS B
WHERE M.MEMBER_ID = A.회원번호
AND C.MEMBER_ID = A.회원번호
AND M.MEMBER_ID = C.MEMBER_ID
AND C.BRANCH = B.BRANCH
AND C.SEQ = A.SEQ
AND C.PERSONAL_ID = BU.PERSONAL_ID
AND Z.ZIP_CD1 = M.DEL_ZIP_CD1
AND Z.ZIP_CD2 = M.DEL_ZIP_CD2
GROUP BY 지점, 회원번호, M.MEMBER_NAME, BU.BUSINESS_NAME, Z.CITY, Z.TOWN, M.DEL_ADDRESS3, B.BRANCH_NAME
HAVING (SUM(국어횟수) + SUM(영어횟수) + SUM(수학횟수)) >= SUM(TOT)
AND ROUND(SUM(총점) / (SUM(국어횟수) + SUM(영어횟수) + SUM(수학횟수)), 2) >= 60
/////////////////
-- " 1학기 " 두번째 query내용
SELECT T0 "회원번호",
SUM(T1) "math03", SUM(T2) "math04",
SUM(T3) "math05", SUM(T4) "math06",
SUM(T5) "math07", SUM(T6) "math08"
FROM (
SELECT A0 T0,
DECODE(SUBSTR(G.A1,3,2), '03', SUM(G.A2), 0)/COUNT(A0) T1,
DECODE(SUBSTR(G.A1,3,2), '04', SUM(G.A2), 0)/COUNT(A0) T2,
DECODE(SUBSTR(G.A1,3,2), '05', SUM(G.A2), 0)/COUNT(A0) T3,
DECODE(SUBSTR(G.A1,3,2), '06', SUM(G.A2), 0)/COUNT(A0) T4,
DECODE(SUBSTR(G.A1,3,2), '07', SUM(G.A2), 0)/COUNT(A0) T5,
DECODE(SUBSTR(G.A1,3,2), '08', SUM(G.A2), 0)/COUNT(A0) T6
FROM (
SELECT P.MEMBER_ID A0,
P.YYMM A1,
DECODE(P.SUBJECT, '30', COUNT(*)) A2
FROM G05_POINT P, G02_CONTACT@MIS C
WHERE P.YYMM BETWEEN TO_CHAR(SYSDATE, 'YY') || '03' AND TO_CHAR(SYSDATE, 'YY') || '08'
AND C.SUBSCRIPTION_OPEN <= TO_CHAR(SYSDATE, 'YYYY') || '0801'
AND C.REGULAR_TO >= TO_CHAR(SYSDATE, 'YYYY') || '0301'
AND C.MEMBER_ID = :MEMBERID
AND P.MEMBER_ID = :MEMBERID
AND P.INSERT_YYMM < TO_CHAR(SYSDATE, 'YYYY') || '0901'
AND C.MEMBER_ID = P.MEMBER_ID
AND SUBSTR(C.GBN, 2, 2) = P.GBN
AND P.YYMM <> '0000'
AND SUBSTR(P.SUBJECT,1,2) = '30'
GROUP BY P.MEMBER_ID, P.YYMM, P.SUBJECT, C.SEQ
) G GROUP BY G.A0, SUBSTR(G.A1,3,2)
////////////
query내용이 상당히 복잡(??)합니다.
문제는요 첫번째 query내용에
두번째 query내용을 삽입해서 하나의 query에서 돌리려고 하는데요
정말 넘 머리가 아프게 ~~~ 안돼네요...정말정말 도움좀 꼭 주세요.
아님 첫번째 Query의 결과로 두번째 Query가 돌아가는 건가요?
ajfxlspt wrote:
> -- "1학기" 첫번째 query내용
> SELECT 회원번호 "회원번호",
> SUM(학년) "학년",
> SUM(총점) "총 점",
> SUM(A03월국어) "3월 국어", SUM(A04월국어) "4월 국어",
> SUM(A05월국어) "5월 국어", SUM(A06월국어) "6월 국어",
> SUM(A07월국어) "7월 국어", SUM(A08월국어) "8월 국어",
> SUM(A03월영어) "3월 영어", SUM(A04월영어) "4월 영어",
> SUM(A05월영어) "5월 영어", SUM(A06월영어) "6월 영어",
> SUM(A07월영어) "7월 영어", SUM(A08월영어) "8월 영어",
> SUM(A03월수학) "3월 수학", SUM(A04월수학) "4월 수학",
> SUM(A05월수학) "5월 수학", SUM(A06월수학) "6월 수학",
> SUM(A07월수학) "7월 수학", SUM(A08월수학) "8월 수학",
> SUM(국어횟수) "국어 횟수", SUM(영어횟수) "영어 횟수",
> SUM(수학횟수) "수학 횟수",
> SUM(국어총점) "국어 총점", SUM(영어총점) "영어 총점",
> SUM(수학총점) "수학 총점",
> SUM(국어평균) "국어 평균", SUM(영어평균) "영어 평균",
> SUM(수학평균) "수학 평균",
> SUM(국어횟수) + SUM(영어횟수) + SUM(수학횟수) "총횟수",
> ROUND(SUM(총점) / (SUM(국어횟수) + SUM(영어횟수) + SUM(수학횟수)), 2) "총평균",
> SUM(TOT),
> sum(A3국어), sum(A4국어), sum(A5국어), sum(A6국어), sum(A7국어), sum(A8국어),
> sum(A3영어), sum(A4영어), sum(A5영어), sum(A6영어), sum(A7영어), sum(A8영어),
> sum(A3수학), sum(A4수학), sum(A5수학), sum(A6수학), sum(A7수학), sum(A8수학),
> 지점 "지점",
> M.MEMBER_NAME "NAME",
> BU.BUSINESS_NAME "BNAME",
> Z.CITY || ' ' || Z.TOWN "TOWN",
> DECODE(INSTR(M.DEL_ADDRESS3, ' ', 1, 2), 0, M.DEL_ADDRESS3,
> SUBSTR(M.DEL_ADDRESS3, 1, INSTR(M.DEL_ADDRESS3, ' ', 1, 2)) ) "CITY1",
> DECODE(INSTR(M.DEL_ADDRESS3, ' ', 3, 2), 0, ' ',
> SUBSTR(SUBSTR(M.DEL_ADDRESS3, INSTR(M.DEL_ADDRESS3, ' ', 3, 2), 50),2,50)) "CITY2",
>
> DECODE(INSTR(B.BRANCH_NAME,'지점'), 0, B.BRANCH_NAME,
> SUBSTR(B.BRANCH_NAME, 1, INSTR(B.BRANCH_NAME,'지점') - 1)) "지점1"
> FROM (
> SELECT 지점, 학년, 회원번호,
> TRUNC(((DECODE(SIGN(SUM(TOT) - 6), 1, 6, SUM(TOT)) * 4) * 40) / 100, 0) "TOT",
> SUM(총점) / COUNT(회원번호) 총점,
> SUM(A03월국어) / COUNT(회원번호) A03월국어, SUM(A04월국어) / COUNT(회원번호) A04월국어,
> SUM(A05월국어) / COUNT(회원번호) A05월국어, SUM(A06월국어) / COUNT(회원번호) A06월국어,
> SUM(A07월국어) / COUNT(회원번호) A07월국어, SUM(A08월국어) / COUNT(회원번호) A08월국어,
> SUM(A03월영어) / COUNT(회원번호) A03월영어, SUM(A04월영어) / COUNT(회원번호) A04월영어,
> SUM(A05월영어) / COUNT(회원번호) A05월영어, SUM(A06월영어) / COUNT(회원번호) A06월영어,
> SUM(A07월영어) / COUNT(회원번호) A07월영어, SUM(A08월영어) / COUNT(회원번호) A08월영어,
> SUM(A03월수학) / COUNT(회원번호) A03월수학, SUM(A04월수학) / COUNT(회원번호) A04월수학,
> SUM(A05월수학) / COUNT(회원번호) A05월수학, SUM(A06월수학) / COUNT(회원번호) A06월수학,
> SUM(A07월수학) / COUNT(회원번호) A07월수학, SUM(A08월수학) / COUNT(회원번호) A08월수학,
> SUM(국어횟수) / COUNT(회원번호) 국어횟수,
> SUM(영어횟수) / COUNT(회원번호) 영어횟수,
> SUM(수학횟수) / COUNT(회원번호) 수학횟수,
> SUM(국어총점) / COUNT(회원번호) 국어총점,
> SUM(영어총점) / COUNT(회원번호) 영어총점,
> SUM(수학총점) / COUNT(회원번호) 수학총점,
> SUM(국어평균) / COUNT(회원번호) 국어평균,
> SUM(영어평균) / COUNT(회원번호) 영어평균,
> SUM(수학평균) / COUNT(회원번호) 수학평균,
> SUM(A3국어) / COUNT(회원번호) A3국어, SUM(A4국어) / COUNT(회원번호) A4국어,
> SUM(A5국어) / COUNT(회원번호) A5국어, SUM(A6국어) / COUNT(회원번호) A6국어,
> SUM(A7국어) / COUNT(회원번호) A7국어, SUM(A8국어) / COUNT(회원번호) A8국어,
> SUM(A3영어) / COUNT(회원번호) A3영어, SUM(A4영어) / COUNT(회원번호) A4영어,
> SUM(A5영어) / COUNT(회원번호) A5영어, SUM(A6영어) / COUNT(회원번호) A6영어,
> SUM(A7영어) / COUNT(회원번호) A7영어, SUM(A8영어) / COUNT(회원번호) A8영어,
> SUM(A3수학) / COUNT(회원번호) A3수학, SUM(A4수학) / COUNT(회원번호) A4수학,
> SUM(A5수학) / COUNT(회원번호) A5수학, SUM(A6수학) / COUNT(회원번호) A6수학,
> SUM(A7수학) / COUNT(회원번호) A7수학, SUM(A8수학) / COUNT(회원번호) A8수학,
> MAX(SEQ) SEQ
> FROM (
> SELECT 지점 "지점",
> SUBSTR(구분, 2, 1) "학년",
> 회원번호 "회원번호",
> 구독기간 "TOT",
> SUM(총점) "총점",
> NVL(SUM(A.T_K03), 0) "A03월국어", NVL(SUM(A.T_K04), 0) "A04월국어",
> NVL(SUM(A.T_K05), 0) "A05월국어", NVL(SUM(A.T_K06), 0) "A06월국어",
> NVL(SUM(A.T_K07), 0) "A07월국어", NVL(SUM(A.T_K08), 0) "A08월국어",
> NVL(SUM(A.T_E03), 0) "A03월영어", NVL(SUM(A.T_E04), 0) "A04월영어",
> NVL(SUM(A.T_E05), 0) "A05월영어", NVL(SUM(A.T_E06), 0) "A06월영어",
> NVL(SUM(A.T_E07), 0) "A07월영어", NVL(SUM(A.T_E08), 0) "A08월영어",
> NVL(SUM(A.T_M03), 0) "A03월수학", NVL(SUM(A.T_M04), 0) "A04월수학",
> NVL(SUM(A.T_M05), 0) "A05월수학", NVL(SUM(A.T_M06), 0) "A06월수학",
> NVL(SUM(A.T_M07), 0) "A07월수학", NVL(SUM(A.T_M08), 0) "A08월수학",
> NVL(SUM(A.C_K), 0) "국어횟수", NVL(SUM(A.C_E), 0) "영어횟수",
> NVL(SUM(A.C_M), 0) "수학횟수",
> NVL(SUM(A.T_K), 0) "국어총점", NVL(SUM(A.T_E), 0) "영어총점",
> NVL(SUM(A.T_M), 0) "수학총점",
> DECODE(NVL(SUM(A.C_K), 0), 0, 0, ROUND(SUM(A.T_K) / SUM(A.C_K), 1)) "국어평균",
> DECODE(NVL(SUM(A.C_E), 0), 0, 0, ROUND(SUM(A.T_E) / SUM(A.C_E), 1)) "영어평균",
> DECODE(NVL(SUM(A.C_M), 0), 0, 0, ROUND(SUM(A.T_M) / SUM(A.C_M), 1)) "수학평균",
> decode(SUM(A.T_K03), 0, 999, 0) "A3국어", decode(SUM(A.T_K04), 0, 999, 0) "A4국어",
> decode(SUM(A.T_K05), 0, 999, 0) "A5국어", decode(SUM(A.T_K06), 0, 999, 0) "A6국어",
> decode(SUM(A.T_K07), 0, 999, 0) "A7국어", decode(SUM(A.T_K08), 0, 999, 0) "A8국어",
> decode(SUM(A.T_E03), 0, 999, 0) "A3영어", decode(SUM(A.T_E04), 0, 999, 0) "A4영어",
> decode(SUM(A.T_E05), 0, 999, 0) "A5영어", decode(SUM(A.T_E06), 0, 999, 0) "A6영어",
> decode(SUM(A.T_E07), 0, 999, 0) "A7영어", decode(SUM(A.T_E08), 0, 999, 0) "A8영어",
> decode(SUM(A.T_M03), 0, 999, 0) "A3수학", decode(SUM(A.T_M04), 0, 999, 0) "A4수학",
> decode(SUM(A.T_M05), 0, 999, 0) "A5수학", decode(SUM(A.T_M06), 0, 999, 0) "A6수학",
> decode(SUM(A.T_M07), 0, 999, 0) "A7수학", decode(SUM(A.T_M08), 0, 999, 0) "A8수학",
> SEQ
> FROM
> (SELECT C.BRANCH 지점,
> P.MEMBER_ID 회원번호,
> DECODE(P.SUBJECT, '10', SUM(MONTHS_BETWEEN(
> DECODE(SIGN( MONTHS_BETWEEN(TO_DATE(TO_CHAR(SYSDATE, 'YYYY') || '0801', 'YYYYMMDD'), TO_DATE(REGULAR_TO, 'YYYYMMDD'))
> ), 1, TO_DATE(REGULAR_TO, 'YYYYMMDD'), TO_DATE(TO_CHAR(SYSDATE, 'YYYY') || '0801', 'YYYYMMDD')),
> DECODE(SIGN( MONTHS_BETWEEN(TO_DATE(SUBSCRIPTION_OPEN, 'YYYYMMDD'), TO_DATE(TO_CHAR(SYSDATE, 'YYYY') || '0301', 'YYYYMMDD'))
> ), 1, TO_DATE(SUBSCRIPTION_OPEN, 'YYYYMMDD'), TO_DATE(TO_CHAR(SYSDATE, 'YYYY') || '0301', 'YYYYMMDD'))) + 1) / COUNT(*),
> '20', SUM(MONTHS_BETWEEN(
> DECODE(SIGN( MONTHS_BETWEEN(TO_DATE(TO_CHAR(SYSDATE, 'YYYY') || '0801', 'YYYYMMDD'), TO_DATE(REGULAR_TO, 'YYYYMMDD'))
> ), 1, TO_DATE(REGULAR_TO, 'YYYYMMDD'), TO_DATE(TO_CHAR(SYSDATE, 'YYYY') || '0801', 'YYYYMMDD')),
> DECODE(SIGN( MONTHS_BETWEEN(TO_DATE(SUBSCRIPTION_OPEN, 'YYYYMMDD'), TO_DATE(TO_CHAR(SYSDATE, 'YYYY') || '0301', 'YYYYMMDD'))
> ), 1, TO_DATE(SUBSCRIPTION_OPEN, 'YYYYMMDD'), TO_DATE(TO_CHAR(SYSDATE, 'YYYY') || '0301', 'YYYYMMDD'))) + 1) / COUNT(*),
> '30', SUM(MONTHS_BETWEEN(
> DECODE(SIGN( MONTHS_BETWEEN(TO_DATE(TO_CHAR(SYSDATE, 'YYYY') || '0801', 'YYYYMMDD'), TO_DATE(REGULAR_TO, 'YYYYMMDD'))
> ), 1, TO_DATE(REGULAR_TO, 'YYYYMMDD'), TO_DATE(TO_CHAR(SYSDATE, 'YYYY') || '0801', 'YYYYMMDD')),
> DECODE(SIGN( MONTHS_BETWEEN(TO_DATE(SUBSCRIPTION_OPEN, 'YYYYMMDD'), TO_DATE(TO_CHAR(SYSDATE, 'YYYY') || '0301', 'YYYYMMDD'))
> ), 1, TO_DATE(SUBSCRIPTION_OPEN, 'YYYYMMDD'), TO_DATE(TO_CHAR(SYSDATE, 'YYYY') || '0301', 'YYYYMMDD'))) + 1) / COUNT(*)) 구독기간,
> P.GBN 구분,
> SUM(P.POINT) 총점,
> DECODE(SUBSTR(P.YYMM,3,2), '03', DECODE(P.SUBJECT, '10', DECODE(COUNT(*), 0 , 0, ROUND(SUM(P.POINT) / COUNT(*), 2)))) T_K03, /* 3월 */
> DECODE(SUBSTR(P.YYMM,3,2), '04', DECODE(P.SUBJECT, '10', DECODE(COUNT(*), 0 , 0, ROUND(SUM(P.POINT) / COUNT(*), 2)))) T_K04, /* 4월 */
> DECODE(SUBSTR(P.YYMM,3,2), '05', DECODE(P.SUBJECT, '10', DECODE(COUNT(*), 0 , 0, ROUND(SUM(P.POINT) / COUNT(*), 2)))) T_K05, /* 5월 */
> DECODE(SUBSTR(P.YYMM,3,2), '06', DECODE(P.SUBJECT, '10', DECODE(COUNT(*), 0 , 0, ROUND(SUM(P.POINT) / COUNT(*), 2)))) T_K06, /* 6월 */
> DECODE(SUBSTR(P.YYMM,3,2), '07', DECODE(P.SUBJECT, '10', DECODE(COUNT(*), 0 , 0, ROUND(SUM(P.POINT) / COUNT(*), 2)))) T_K07, /* 7월 */
> DECODE(SUBSTR(P.YYMM,3,2), '08', DECODE(P.SUBJECT, '10', DECODE(COUNT(*), 0 , 0, ROUND(SUM(P.POINT) / COUNT(*), 2)))) T_K08, /* 8월 */
> DECODE(SUBSTR(P.YYMM,3,2), '03', DECODE(P.SUBJECT, '20', DECODE(COUNT(*), 0 , 0, ROUND(SUM(P.POINT) / COUNT(*), 2)))) T_E03, /* 3월 */
> DECODE(SUBSTR(P.YYMM,3,2), '04', DECODE(P.SUBJECT, '20', DECODE(COUNT(*), 0 , 0, ROUND(SUM(P.POINT) / COUNT(*), 2)))) T_E04, /* 4월 */
> DECODE(SUBSTR(P.YYMM,3,2), '05', DECODE(P.SUBJECT, '20', DECODE(COUNT(*), 0 , 0, ROUND(SUM(P.POINT) / COUNT(*), 2)))) T_E05, /* 5월 */
> DECODE(SUBSTR(P.YYMM,3,2), '06', DECODE(P.SUBJECT, '20', DECODE(COUNT(*), 0 , 0, ROUND(SUM(P.POINT) / COUNT(*), 2)))) T_E06, /* 6월 */
> DECODE(SUBSTR(P.YYMM,3,2), '07', DECODE(P.SUBJECT, '20', DECODE(COUNT(*), 0 , 0, ROUND(SUM(P.POINT) / COUNT(*), 2)))) T_E07, /* 7월 */
> DECODE(SUBSTR(P.YYMM,3,2), '08', DECODE(P.SUBJECT, '20', DECODE(COUNT(*), 0 , 0, ROUND(SUM(P.POINT) / COUNT(*), 2)))) T_E08, /* 8월 */
> DECODE(SUBSTR(P.YYMM,3,2), '03', DECODE(P.SUBJECT, '30', DECODE(COUNT(*), 0 , 0, ROUND(SUM(P.POINT) / COUNT(*), 2)))) T_M03, /* 3월 */
> DECODE(SUBSTR(P.YYMM,3,2), '04', DECODE(P.SUBJECT, '30', DECODE(COUNT(*), 0 , 0, ROUND(SUM(P.POINT) / COUNT(*), 2)))) T_M04, /* 4월 */
> DECODE(SUBSTR(P.YYMM,3,2), '05', DECODE(P.SUBJECT, '30', DECODE(COUNT(*), 0 , 0, ROUND(SUM(P.POINT) / COUNT(*), 2)))) T_M05, /* 5월 */
> DECODE(SUBSTR(P.YYMM,3,2), '06', DECODE(P.SUBJECT, '30', DECODE(COUNT(*), 0 , 0, ROUND(SUM(P.POINT) / COUNT(*), 2)))) T_M06, /* 6월 */
> DECODE(SUBSTR(P.YYMM,3,2), '07', DECODE(P.SUBJECT, '30', DECODE(COUNT(*), 0 , 0, ROUND(SUM(P.POINT) / COUNT(*), 2)))) T_M07, /* 7월 */
> DECODE(SUBSTR(P.YYMM,3,2), '08', DECODE(P.SUBJECT, '30', DECODE(COUNT(*), 0 , 0, ROUND(SUM(P.POINT) / COUNT(*), 2)))) T_M08, /* 8월 */
> DECODE(P.SUBJECT, '10', COUNT(*)) C_K,
> DECODE(P.SUBJECT, '20', COUNT(*)) C_E,
> DECODE(P.SUBJECT, '30', COUNT(*)) C_M,
> DECODE(P.SUBJECT, '10', SUM(P.POINT)) T_K,
> DECODE(P.SUBJECT, '20', SUM(P.POINT)) T_E,
> DECODE(P.SUBJECT, '30', SUM(P.POINT)) T_M,
> C.SEQ SEQ
> FROM G05_POINT P, G02_CONTACT@MIS C
> WHERE P.YYMM BETWEEN TO_CHAR(SYSDATE, 'YY') || '03' AND TO_CHAR(SYSDATE, 'YY') || '08'
> AND C.SUBSCRIPTION_OPEN <= TO_CHAR(SYSDATE, 'YYYY') || '0801'
> AND C.REGULAR_TO >= TO_CHAR(SYSDATE, 'YYYY') || '0301'
> AND SUBSTR(C.GBN, 2, 2) = P.GBN
> AND C.MEMBER_ID in (
> '1999041530', '1999041780', '1999042002', '1999042064', '1999042304', '1999042307', '1999042474', '1999042837', '1999043008', '1999043573', '1999043640', '1999044817', '1999044922', '1999045739', '1999045740','1999045908', '1999050416', '1999057929', '1999060547', '1999060551', '1999064490', '1999065178', '1999065181', '2000000868', '2000004068', '2000009615'
> )
> AND P.MEMBER_ID in (
> '1999041530', '1999041780', '1999042002', '1999042064', '1999042304', '1999042307', '1999042474', '1999042837', '1999043008', '1999043573', '1999043640', '1999044817', '1999044922', '1999045739', '1999045740','1999045908', '1999050416', '1999057929', '1999060547', '1999060551', '1999064490', '1999065178', '1999065181', '2000000868', '2000004068', '2000009615'
> )
> AND C.BRANCH BETWEEN :MEMA AND :MEMZ
> AND P.INSERT_YYMM < TO_CHAR(SYSDATE, 'YYYY') || '0901'
> AND C.MEMBER_ID = P.MEMBER_ID
> GROUP BY C.BRANCH, P.MEMBER_ID, P.SUBJECT, SUBSTR(P.YYMM,3,2), C.SEQ, P.GBN ) A
> GROUP BY 지점, SUBSTR(구분, 2, 1), 회원번호, 구독기간, SEQ)
> GROUP BY 지점, 학년, 회원번호
> ) A, G01_MEMBER@MIS M, G02_CONTACT@MIS C, G90_ZIPCODE@MIS Z, G13_BUSINESS@MIS BU, G92_BRANCH@MIS B
> WHERE M.MEMBER_ID = A.회원번호
> AND C.MEMBER_ID = A.회원번호
> AND M.MEMBER_ID = C.MEMBER_ID
> AND C.BRANCH = B.BRANCH
> AND C.SEQ = A.SEQ
> AND C.PERSONAL_ID = BU.PERSONAL_ID
> AND Z.ZIP_CD1 = M.DEL_ZIP_CD1
> AND Z.ZIP_CD2 = M.DEL_ZIP_CD2
>
> GROUP BY 지점, 회원번호, M.MEMBER_NAME, BU.BUSINESS_NAME, Z.CITY, Z.TOWN, M.DEL_ADDRESS3, B.BRANCH_NAME
> HAVING (SUM(국어횟수) + SUM(영어횟수) + SUM(수학횟수)) >= SUM(TOT)
> AND ROUND(SUM(총점) / (SUM(국어횟수) + SUM(영어횟수) + SUM(수학횟수)), 2) >= 60
>
> /////////////////
>
> -- " 1학기 " 두번째 query내용
> SELECT T0 "회원번호",
> SUM(T1) "math03", SUM(T2) "math04",
> SUM(T3) "math05", SUM(T4) "math06",
> SUM(T5) "math07", SUM(T6) "math08"
> FROM (
>
> SELECT A0 T0,
> DECODE(SUBSTR(G.A1,3,2), '03', SUM(G.A2), 0)/COUNT(A0) T1,
> DECODE(SUBSTR(G.A1,3,2), '04', SUM(G.A2), 0)/COUNT(A0) T2,
> DECODE(SUBSTR(G.A1,3,2), '05', SUM(G.A2), 0)/COUNT(A0) T3,
> DECODE(SUBSTR(G.A1,3,2), '06', SUM(G.A2), 0)/COUNT(A0) T4,
> DECODE(SUBSTR(G.A1,3,2), '07', SUM(G.A2), 0)/COUNT(A0) T5,
> DECODE(SUBSTR(G.A1,3,2), '08', SUM(G.A2), 0)/COUNT(A0) T6
> FROM (
> SELECT P.MEMBER_ID A0,
> P.YYMM A1,
> DECODE(P.SUBJECT, '30', COUNT(*)) A2
> FROM G05_POINT P, G02_CONTACT@MIS C
> WHERE P.YYMM BETWEEN TO_CHAR(SYSDATE, 'YY') || '03' AND TO_CHAR(SYSDATE, 'YY') || '08'
>
>
> AND C.SUBSCRIPTION_OPEN <= TO_CHAR(SYSDATE, 'YYYY') || '0801'
> AND C.REGULAR_TO >= TO_CHAR(SYSDATE, 'YYYY') || '0301'
>
> AND C.MEMBER_ID = :MEMBERID
> AND P.MEMBER_ID = :MEMBERID
>
> AND P.INSERT_YYMM < TO_CHAR(SYSDATE, 'YYYY') || '0901'
> AND C.MEMBER_ID = P.MEMBER_ID
>
> AND SUBSTR(C.GBN, 2, 2) = P.GBN
>
> AND P.YYMM <> '0000'
> AND SUBSTR(P.SUBJECT,1,2) = '30'
>
> GROUP BY P.MEMBER_ID, P.YYMM, P.SUBJECT, C.SEQ
> ) G GROUP BY G.A0, SUBSTR(G.A1,3,2)
> ////////////
>
> query내용이 상당히 복잡(??)합니다.
> 문제는요 첫번째 query내용에
> 두번째 query내용을 삽입해서 하나의 query에서 돌리려고 하는데요
> 정말 넘 머리가 아프게 ~~~ 안돼네요...정말정말 도움좀 꼭 주세요.
>