SQL Fiddle
的Oracle 11g R2架构设置:
CREATE TABLE Data AS
SELECT '201505071498224437562706' AS StatKey, TO_DATE('2015-05-07 14:12:44', 'YYYY-MM-DD HH24:MI:SS') AS StartDate, TO_DATE('2015-05-07 14:22:44', 'YYYY-MM-DD HH24:MI:SS') AS EndDate, 'API5' AS APIName, 'Invocations' AS StatName, 34 AS StatValue FROM DUAL
UNION ALL SELECT '201505071498161437466684' AS StatKey, TO_DATE('2015-05-07 14:06:14', 'YYYY-MM-DD HH24:MI:SS') AS StartDate, TO_DATE('2015-05-07 14:16:14', 'YYYY-MM-DD HH24:MI:SS') AS EndDate, 'API4' AS APIName, 'Invocations' AS StatName, 79 AS StatValue FROM DUAL
UNION ALL SELECT '201505071498060937466556' AS StatKey, TO_DATE('2015-05-07 13:56:08', 'YYYY-MM-DD HH24:MI:SS') AS StartDate, TO_DATE('2015-05-07 14:06:08', 'YYYY-MM-DD HH24:MI:SS') AS EndDate, 'API4' AS APIName, 'Average' AS StatName, 26264.37 AS StatValue FROM DUAL
UNION ALL SELECT '201505071497263437627286' AS StatKey, TO_DATE('2015-05-07 14:16:33', 'YYYY-MM-DD HH24:MI:SS') AS StartDate, TO_DATE('2015-05-07 14:26:34', 'YYYY-MM-DD HH24:MI:SS') AS EndDate, 'API2' AS APIName, 'Invocations' AS StatName, 24 AS StatValue FROM DUAL
UNION ALL SELECT '201505071497262137620812' AS StatKey, TO_DATE('2015-05-07 14:16:19', 'YYYY-MM-DD HH24:MI:SS') AS StartDate, TO_DATE('2015-05-07 14:26:20', 'YYYY-MM-DD HH24:MI:SS') AS EndDate, 'API2' AS APIName, 'Invocations' AS StatName, 24 AS StatValue FROM DUAL
UNION ALL SELECT '201505071497024537466378' AS StatKey, TO_DATE('2015-05-07 13:52:43', 'YYYY-MM-DD HH24:MI:SS') AS StartDate, TO_DATE('2015-05-07 14:02:44', 'YYYY-MM-DD HH24:MI:SS') AS EndDate, 'API1' AS APIName, 'Average' AS StatName, 6830050 AS StatValue FROM DUAL
UNION ALL SELECT '201505071497023337466368' AS StatKey, TO_DATE('2015-05-07 13:52:31', 'YYYY-MM-DD HH24:MI:SS') AS StartDate, TO_DATE('2015-05-07 14:02:32', 'YYYY-MM-DD HH24:MI:SS') AS EndDate, 'API3' AS APIName, 'Average' AS StatName, 31523 AS StatValue FROM DUAL
UNION ALL SELECT '201505071496023337466361' AS StatKey, TO_DATE('2015-05-07 13:52:31', 'YYYY-MM-DD HH24:MI:SS') AS StartDate, TO_DATE('2015-05-07 14:02:32', 'YYYY-MM-DD HH24:MI:SS') AS EndDate, 'API2' AS APIName, 'Invocations' AS StatName, 1 AS StatValue FROM DUAL
UNION ALL SELECT '201505071494263837628892' AS StatKey, TO_DATE('2015-05-07 14:16:36', 'YYYY-MM-DD HH24:MI:SS') AS StartDate, TO_DATE('2015-05-07 14:26:37', 'YYYY-MM-DD HH24:MI:SS') AS EndDate, 'API5' AS APIName, 'Invocations' AS StatName, 68 AS StatValue FROM DUAL
UNION ALL SELECT '201505071493124437466656' AS StatKey, TO_DATE('2015-05-07 14:02:44', 'YYYY-MM-DD HH24:MI:SS') AS StartDate, TO_DATE('2015-05-07 14:12:44', 'YYYY-MM-DD HH24:MI:SS') AS EndDate, 'API1' AS APIName, 'Invocations' AS StatName, 2 AS StatValue FROM DUAL
UNION ALL SELECT '201505071492263037625304' AS StatKey, TO_DATE('2015-05-07 14:16:29', 'YYYY-MM-DD HH24:MI:SS') AS StartDate, TO_DATE('2015-05-07 14:26:30', 'YYYY-MM-DD HH24:MI:SS') AS EndDate, 'API3' AS APIName, 'Average' AS StatName, 179223.29 AS StatValue FROM DUAL;
查询1:
SELECT TRUNC(EndDate, 'HH') AS "Date&Hour",
APIName,
SUM(StatValue) AS Invocations
FROM Data
WHERE StatName = 'Invocations'
GROUP BY TRUNC(EndDate, 'HH'),
APIName
Results:
| Date&Hour | APINAME | INVOCATIONS |
|-----------------------|---------|-------------|
| May, 07 2015 14:00:00 | API2 | 49 |
| May, 07 2015 14:00:00 | API5 | 102 |
| May, 07 2015 14:00:00 | API1 | 2 |
| May, 07 2015 14:00:00 | API4 | 79 |
这里给出的一切都是一个很好的解决方案,但是对于我的需求来说,这是相对简单的,并且似乎对我最好。谢谢。 – Matt