我正在尝试生成一个聚合表。
假设这是我的tbla。
| type | name | timestap |
|------|------|---------------------|
| prod | t1 | 2020-06-01 01:00:00 |
| prod | t2 | 2020-06-01 01:00:02 |
| prod | t3 | 2020-06-01 01:00:03 |
| test | t4 | 2020-06-01 02:20:02 |
| test | t5 | 2020-06-01 02:20:03 |
和tblb
| tid | starttime | name | subtask | maintask |
|-----|---------------------|------|---------|----------|
| 1 | 2020-06-01 01:10:00 | t1 | 5 | 10 |
| 1 | 2020-06-01 01:10:00 | t1 | 6 | 10 |
| 1 | 2020-06-01 01:10:00 | t1 | 7 | 10 |
| 1 | 2020-06-01 01:10:00 | t1 | 8 | 10 |
| 2 | 2020-06-01 00:01:00 | t1 | 3 | 10 |
| 2 | 2020-05-01 00:02:00 | t1 | 5 | 15 |
| 4 | 2020-06-01 01:00:00 | t2 | 10 | 10 |
| 5 | 2020-06-01 11:00:10 | t2 | 10 | 20 |
| 5 | 2020-06-01 11:00:10 | t2 | 11 | 20 |
| 5 | 2020-06-01 11:00:10 | t2 | 12 | 20 |
现在我需要创建一个包含子任务和主任务之和的报表表。但是有一个where条件,我们需要选择tid,subtask,maintask,其中starttime大于每个名称的tbla时间戳。然后求和。
预期产量:
| type | name | sum_of_subtask | sum_of_maintask | diff |
|------|------|----------------|-----------------|------|
| prod | t1 | 26 | 40 | 14 |
| prod | t2 | 33 | 60 | 27 |
对于t1,tid将是1,因为它的开始时间>tbla.timestamp
对于t2,tid为5,tblb.starttime>tbla.timestamp
另外,我要选择的行的另一个条件是 MAX(tid) where starttime is > tblA.timestamp
.
然后获取行并进行求和,找出diff列上的子任务的和与主任务的和之间的差异。
我不知道怎么写这个逻辑。
1条答案
按热度按时间4c8rllxm1#
你需要简单的
join
以及sum
用于聚合。这是演示。输出: