下面是数据表-
del_no | Pkt | direction | Env | start_datetimestamp |
---------+---------+------------+-------+---------------------+
H_00002 | 02 | SOUTH | PROD | 2022-10-29 16:20:57 |
E20 | 20 | NORTH | PROD | 2022-10-30 16:41:37 |
H_00002 | 02 | NORTH | TEST | 2022-10-30 17:21:17 |
E20 | 20 | SOUTH | DEV | 2022-10-30 17:30:24 |
H_00004 | 02 | NORTH | PROD | 2022-10-30 16:52:48 |
H_00004 | 02 | SOUTH | PROD | 2022-10-30 19:03:36 |
H_00007 | 02 | NORTH | PROD | 2022-10-30 20:52:48 |
H_00007 | 02 | SOUTH | PROD | 2022-10-30 21:03:36 |
H_00015 | 02 | SOUTH | TEST | 2022-11-13 19:11:10 |
L 0013 | 13 | NORTH | PROD | 2022-11-14 20:06:46 |
H_00015 | 02 | NORTH | TEST | 2022-11-15 20:17:40 |
L0021 | 21 | SOUTH | TEST | 2022-11-15 20:56:18 |
H_00015 | 02 | NORTH | PROD | 2022-11-15 20:17:40 |
L0027 | 21 | SOUTH | DEV | 2022-11-30 20:56:18 |
H_00019 | 02 | NORTH | PROD | 2022-11-30 20:17:40 |
L0023 | 21 | SOUTH | TEST | 2022-11-30 20:56:18 |
H_00019 | 02 | SOUTH | TEST | 2022-11-30 20:17:40 |
L0025 | 21 | SOUTH | TEST | 2022-11-30 20:56:18 |
H_00019 | 02 | SOUTH | DEV | 2022-11-30 20:17:40 |
字符串
我想在下面的条件下计算回合数-
1-仅按Pkt过滤,其中Pkt = 02。
2-按'del_no'分组(将NORTH和SOUTH视为一个完整的回合),然后按月统计所有回合。
3-根据环境分隔计数(例如,第1行和第3行是一个完整的回合,都有PROD和TEST环境,因此一个计数应在PROD/TEST环境中,其他计数也是如此)
输出-
Month | Env | Counts |
--------+---------------+--------+
Oct | PROD/TEST | 1 |
Oct | PROD | 2 |
Nov | PROD/TEST | 1 |
Nov | PROD/TEST/DEV | 1 |
2条答案
按热度按时间mu0hgdu01#
字符串
| 月|计数|Env|
| --|--|--|
| Nov| 1 |开发/生产/测试|
| Nov| 1 |产品/测试|
| Oct| 2 |PROD|
| Oct| 1 |产品/测试|
db<>fiddle demo
1.默认情况下,
Env
在字段中按顺序排列。Month
的文本缩写使得它的可用性和排序不太好。一个date_trunc()
将把10月份的所有内容标记为可用和可排序的日期2022-10-01
,11月份标记为2022-11-01
,这可以简化进一步的处理。frebpwbc2#
您可以使用多个CTE,其中第一个CTE用于过滤掉任何具有不完整轮次的del_no,第二个和第三个CTE用于根据月份和环境聚合数据:
字符串
Demo here