如何构建需要窗口函数的 SQL 查询?

问题描述 投票:0回答:1

我有一群工人可以接听电话或协助别人的电话。也就是说,所有工作人员要么首先接听电话(“主要”),要么支持先接听电话的其他人(“支持”)。数据库看起来像这样:

| CallAnsweredBy | SupportedBy | Outcome | Date     |
| -------------- | ----------- | ------- | -------- |
| TeamMem1       | TeamMem2    | 10      | 20230101
| TeamMem2       | TeamMem1    | 10      | 20230101
| TeamMem3       | TeamMem1    | 9       | 20230101
. . .
| TeamMem2       | TeamMem1    | 5       | 20230101
| TeamMem3       | TeamMem4    | 4       | 20230101
. . .

我想知道当呼叫 #2(上面第二行)进来时(例如),在将该呼叫作为主要呼叫之前,接听者 (TM2) 在这一天支持了多少个呼叫? (对于 20230101 上的呼叫 #2,答案将为 1。对于呼叫 #3,答案将为零,因为 TeamMem3 在该呼叫被视为“主要”之前不支持任何呼叫。)

我以前尝试过 PARTITION BY 来处理这种情况,但这次没有帮助。

sql sqlite partition
1个回答
0
投票

我能够通过 SELF JOIN 解决这个问题。来自 t2 的先前支持的调用计数(支持者),其中行号小于 t1 行(如 JNevill 建议的那样)是关键。

© www.soinside.com 2019 - 2024. All rights reserved.