Ich bin nicht sicher, ob ich Sie richtig mit den Fliesen erhalten, aber wenn man die Timerange in vier Regionen bedeuten, indem man würde es so für ein Intervall von 2016- arbeiten 02-01 bis 2016-06-01. Kompromiss: manuelle Berechnung der Intervalle; möglich, eine dieses durch Datumsberechnungen tun kann, zu
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