내가 바로 타일을 가지고 있는지 확실하지 않습니다,하지만 당신은 4 개 지역에 timerange을 나누어 의미하는 경우가 2016-에서 간격이 같이 일하는 것이 02-01부터 2016-06-01. 절충 : 수동으로 간격 계산; 가능한 한 너무
CREATE TABLE tblA (ACCT_ID INTEGER, PDATE DATE);
INSERT INTO TblA(ACCT_ID, PDATE) VALUES (1000,'2016-05-21');
INSERT INTO TblA(ACCT_ID, PDATE) VALUES (1001,'2016-05-11');
INSERT INTO TblA(ACCT_ID, PDATE) VALUES (1002,'2016-05-24');
INSERT INTO TblA(ACCT_ID, PDATE) VALUES (1003,'2016-04-21');
INSERT INTO TblA(ACCT_ID, PDATE) VALUES (1004,'2016-02-12');
INSERT INTO TblA(ACCT_ID, PDATE) VALUES (1005,'2016-02-21');
INSERT INTO TblA(ACCT_ID, PDATE) VALUES (1001,'2016-03-22');
INSERT INTO TblA(ACCT_ID, PDATE) VALUES (1002,'2016-04-01');
INSERT INTO TblA(ACCT_ID, PDATE) VALUES (1005,'2016-04-01');
INSERT INTO TblA(ACCT_ID, PDATE) VALUES (1006,'2016-04-01');
SELECT DISTR.DATE_RANGE, COUNT(DISTR.ACCT_ID)/OVRL.TOTALCNT
FROM (SELECT 'TOP25' as DATE_RANGE, A.ACCT_ID
FROM tblA A
WHERE A.PDATE BETWEEN STR_TO_DATE('01.05.2016', '%m/%d/%Y') AND STR_TO_DATE('01.06.2016', '%m/%d/%Y')
UNION ALL
SELECT 'TOP50' as DATE_RANGE, B.ACCT_ID
FROM tblA B
WHERE B.PDATE BETWEEN STR_TO_DATE('01.04.2016', '%m/%d/%Y') AND STR_TO_DATE('01.06.2016', '%m/%d/%Y')
UNION ALL
SELECT 'TOP75' as DATE_RANGE, C.ACCT_ID
FROM tblA C
WHERE C.PDATE BETWEEN STR_TO_DATE('01.03.2016', '%m/%d/%Y') AND STR_TO_DATE('01.06.2016', '%m/%d/%Y')
UNION ALL
SELECT 'ALL' as DATE_RANGE, C.ACCT_ID
FROM tblA C
WHERE C.PDATE BETWEEN STR_TO_DATE('01.02.2016', '%m/%d/%Y') AND STR_TO_DATE('01.06.2016', '%m/%d/%Y')) DISTR
, (SELECT COUNT(*) AS TOTALCNT FROM tblA A WHERE A.PDATE BETWEEN STR_TO_DATE('01.03.2016', '%m/%d/%Y') AND STR_TO_DATE('01.06.2016', '%m/%d/%Y')) OVRL
GROUP BY DISTR.DATE_RANGE, OVRL.TOTALCNT
이
ALL 10 10
TOP25 3 10
TOP50 7 10
TOP75 8 10