----统计不同部门,不同时间发送短信量(注:没条短信内容大于70字算两条短信,短信状态-3(发送成功)短信状态-3 ----(发送成功)短信状态-4(接收成功))、 短信状态-4(接收失败) ----这是为了统计总共花费的钱数
SELECT E.*, NVL(F.COUNT_5, 0) AS COUNT_5
FROM (SELECT C.*, NVL(D.COUNT_4, 0) AS COUNT_4
FROM (select A.ORG_NO, A.COUNT, B.COUNT_3
from ((SELECT ORG_NO, SUM(COUNT_NUM) AS COUNT
FROM (SELECT T.ORG_NO, COUNT(*) AS COUNT_NUM
FROM SMS_MESSAGE T
WHERE T.SMS_STATE IN ('3', '4', '5')
AND T.ORG_NO = '1357'
AND LENGTH(T.CONTENT) > 0
AND LENGTH(T.CONTENT) <= 70
AND T.SENDTIME > '2010-03-26'
AND T.SENDTIME <= '2012-04-26'
GROUP BY T.ORG_NO
UNION ALL
SELECT T.ORG_NO, COUNT(*) * 2 AS COUNT_NUM
FROM SMS_MESSAGE T
WHERE T.SMS_STATE IN ('3', '4', '5')
AND T.ORG_NO = '1357'
AND LENGTH(T.CONTENT) > 70
AND LENGTH(T.CONTENT) <= 140
AND T.SENDTIME > '2010-03-26'
AND T.SENDTIME <= '2012-04-26'
GROUP BY T.ORG_NO
UNION ALL
SELECT T.ORG_NO, COUNT(*) * 3 AS COUNT_NUM
FROM SMS_MESSAGE T
WHERE T.SMS_STATE IN ('3', '4', '5')
AND T.ORG_NO = '1357'
AND LENGTH(T.CONTENT) > 140
AND LENGTH(T.CONTENT) <= 210
AND T.SENDTIME > '2010-03-26'
AND T.SENDTIME <= '2012-04-26'
GROUP BY T.ORG_NO
UNION ALL
SELECT T.ORG_NO, COUNT(*) * 4 AS COUNT_NUM
FROM SMS_MESSAGE T
WHERE T.SMS_STATE IN ('3', '4', '5')
AND T.ORG_NO = '1357'
AND LENGTH(T.CONTENT) > 210
AND LENGTH(T.CONTENT) <= 280
AND T.SENDTIME > '2010-03-26'
AND T.SENDTIME <= '2012-04-26'
GROUP BY T.ORG_NO)
GROUP BY ORG_NO
ORDER BY ORG_NO) A LEFT JOIN
(SELECT ORG_NO, SUM(COUNT_NUM) AS COUNT_3
FROM (SELECT T.ORG_NO, COUNT(*) AS COUNT_NUM
FROM SMS_MESSAGE T
WHERE T.SMS_STATE = '3'
AND T.ORG_NO = '1357'
AND LENGTH(T.CONTENT) > 0
AND LENGTH(T.CONTENT) <= 70
AND T.SENDTIME > '2010-03-26'
AND T.SENDTIME <= '2012-04-26'
GROUP BY T.ORG_NO
UNION ALL
SELECT T.ORG_NO, COUNT(*) * 2 AS COUNT_NUM
FROM SMS_MESSAGE T
WHERE T.SMS_STATE = '3'
AND T.ORG_NO = '1357'
AND LENGTH(T.CONTENT) > 70
AND LENGTH(T.CONTENT) <= 140
AND T.SENDTIME > '2010-03-26'
AND T.SENDTIME <= '2012-04-26'
GROUP BY T.ORG_NO
UNION ALL
SELECT T.ORG_NO, COUNT(*) * 3 AS COUNT_NUM
FROM SMS_MESSAGE T
WHERE T.SMS_STATE = '3'
AND T.ORG_NO = '1357'
AND LENGTH(T.CONTENT) > 140
AND LENGTH(T.CONTENT) <= 210
AND T.SENDTIME > '2010-03-26'
AND T.SENDTIME <= '2012-04-26'
GROUP BY T.ORG_NO
UNION ALL
SELECT T.ORG_NO, COUNT(*) * 4 AS COUNT_NUM
FROM SMS_MESSAGE T
WHERE T.SMS_STATE = '3'
AND T.ORG_NO = '1357'
AND LENGTH(T.CONTENT) > 210
AND LENGTH(T.CONTENT) <= 280
AND T.SENDTIME > '2010-03-26'
AND T.SENDTIME <= '2012-04-26'
GROUP BY T.ORG_NO)
GROUP BY ORG_NO
ORDER BY ORG_NO) B ON A.ORG_NO = B.ORG_NO)) C
LEFT JOIN (SELECT ORG_NO, SUM(COUNT_NUM) AS COUNT_4
FROM (SELECT T.ORG_NO, COUNT(*) AS COUNT_NUM
FROM SMS_MESSAGE T
WHERE T.SMS_STATE = '4'
AND T.ORG_NO = '1357'
AND LENGTH(T.CONTENT) > 0
AND LENGTH(T.CONTENT) <= 70
AND T.SENDTIME > '2010-03-26'
AND T.SENDTIME <= '2012-04-26'
GROUP BY T.ORG_NO
UNION ALL
SELECT T.ORG_NO, COUNT(*) * 2 AS COUNT_NUM
FROM SMS_MESSAGE T
WHERE T.SMS_STATE = '4'
AND T.ORG_NO = '1357'
AND LENGTH(T.CONTENT) > 70
AND LENGTH(T.CONTENT) <= 140
AND T.SENDTIME > '2010-03-26'
AND T.SENDTIME <= '2012-04-26'
GROUP BY T.ORG_NO
UNION ALL
SELECT T.ORG_NO, COUNT(*) * 3 AS COUNT_NUM
FROM SMS_MESSAGE T
WHERE T.SMS_STATE = '4'
AND T.ORG_NO = '1357'
AND LENGTH(T.CONTENT) > 140
AND LENGTH(T.CONTENT) <= 210
AND T.SENDTIME > '2010-03-26'
AND T.SENDTIME <= '2012-04-26'
GROUP BY T.ORG_NO
UNION ALL
SELECT T.ORG_NO, COUNT(*) * 4 AS COUNT_NUM
FROM SMS_MESSAGE T
WHERE T.SMS_STATE = '4'
AND T.ORG_NO = '1357'
AND LENGTH(T.CONTENT) > 210
AND LENGTH(T.CONTENT) <= 280
AND T.SENDTIME > '2010-03-26'
AND T.SENDTIME <= '2012-04-26'
GROUP BY T.ORG_NO)
GROUP BY ORG_NO
ORDER BY ORG_NO) D ON C.ORG_NO = D.ORG_NO) E
LEFT JOIN (SELECT ORG_NO, SUM(COUNT_NUM) AS COUNT_5
FROM (SELECT T.ORG_NO, COUNT(*) AS COUNT_NUM
FROM SMS_MESSAGE T
WHERE T.SMS_STATE = '5'
AND T.ORG_NO = '1357'
AND LENGTH(T.CONTENT) > 0
AND LENGTH(T.CONTENT) <= 70
AND T.SENDTIME > '2010-03-26'
AND T.SENDTIME <= '2012-04-26'
GROUP BY T.ORG_NO
UNION ALL
SELECT T.ORG_NO, COUNT(*) * 2 AS COUNT_NUM
FROM SMS_MESSAGE T
WHERE T.SMS_STATE = '5'
AND T.ORG_NO = '1357'
AND LENGTH(T.CONTENT) > 70
AND LENGTH(T.CONTENT) <= 140
AND T.SENDTIME > '2010-03-26'
AND T.SENDTIME <= '2012-04-26'
GROUP BY T.ORG_NO
UNION ALL
SELECT T.ORG_NO, COUNT(*) * 3 AS COUNT_NUM
FROM SMS_MESSAGE T
WHERE T.SMS_STATE = '5'
AND T.ORG_NO = '1357'
AND LENGTH(T.CONTENT) > 140
AND LENGTH(T.CONTENT) <= 210
AND T.SENDTIME > '2010-03-26'
AND T.SENDTIME <= '2012-04-26'
GROUP BY T.ORG_NO
UNION ALL
SELECT T.ORG_NO, COUNT(*) * 4 AS COUNT_NUM
FROM SMS_MESSAGE T
WHERE T.SMS_STATE = '5'
AND T.ORG_NO = '1357'
AND LENGTH(T.CONTENT) > 210
AND LENGTH(T.CONTENT) <= 280
AND T.SENDTIME > '2010-03-26'
AND T.SENDTIME <= '2012-04-26'
GROUP BY T.ORG_NO)
GROUP BY ORG_NO
ORDER BY ORG_NO) F ON E.ORG_NO = F.ORG_NO