我有三张table看起来有点像这样。
人员表
| 识别号|人|
| - ------|- ------|
| 1个|名称1|
| 第二章|名称2|
| 三个|名称3|
类型到人员表
| 质量标准|个人ID|
| - ------|- ------|
| 三个|1个|
| 七|第二章|
| 九|三个|
请求日期表
| 识别号|质量标准|日期|
| - ------|- ------|- ------|
| 1个|三个|2020年2月2日|
| 第二章|三个|2020年2月2日|
| 三个|三个|2020年2月2日|
| 四个|七|2020年2月2日|
| 五个|七|2020年2月2日|
我需要计算平均每15秒向每个人发送多少请求,然后按小时分组,结果应该是这样的。
| 人|小时周期|间隔内的请求计数|
| - ------|- ------|- ------|
| 名称1|十五岁到十六岁|二、八三|
| 名称1|从10到11|0.05|
| 名称2|十五岁到十六岁|三、三十九|
我一开始是这样的,但现在我完全卡住了。
SELECT PersonTable.Perosn AS person,
EXTRACT(HOUR FROM CAST(RequestDateTable.rDATE AS TIMESTAMP)) AS hourPeriod,
COUNT(EXTRACT(SECOND FROM CAST(RequestDateTable.rDATE AS TIMESTAMP))) AS "requests in interval count"
FROM PersonTable
JOIN TypeToPersonTable ON PersonTable.ID = TypeToPersonTable.PersonID
JOIN RequestDateTable ON RequestDateTable.SPECID = TypeToPersonTable.SPECID
GROUP BY PersonTable.Person, RequestDateTable.rDATE
任何帮助都将不胜感激。
1条答案
按热度按时间wwtsj6pe1#
这是一个有点不清楚,但似乎你需要分段小时为15秒的间隔。(60分 * 4)15秒的间隔。然后,我猜,您要对一小时内的请求进行计数,并计算每小时内每个总分段数的平均请求数(240)或在一小时内完成请求的每个段数。希望这能帮助您解决问题。
样本数据:
样本数据中有165个request_dates,应该为聚合准备数据,因此我创建了一个cte(命名为segments),cte从R_DATE中提取时间元素,并计算每小时内15秒的段数。
现在,您可以使用上面的分段数据获得不同的计算/聚合。
主SQL