SQL 从分组为范围的子数据创建父组 (BigQuery / ANSI-SQL)

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

我有几个专栏。每个都有自己的连续序列分组。我想根据这些较小的组创建一个父组。以下是我试图完成的一个小例子。数据代表可以属于不同部门、可以属于不同公司的团队。

给出表格:

company_id    department_id    team_id
1             101              10
1             101              11
1             101              12
1             102              10
1             102              11
1             102              12
2             101              10
2             101              11
2             101              12
2             102              10
2             102              11
2             102              12

想要的结果:

company_ids   department_ids   team_ids
1-2           101-102          10-12

如您所见,这以更简洁的方式表示数据。

同样,我也需要考虑差距。因为并非所有Team都会与所有Department重叠;并且并非所有部门都会与所有公司重叠。给出这个示例表:

company_id    department_id    team_id
1             101              10
1             101              11
1             101              12
1             102              10
1             102              11
1             102              12
2             101              10
2             101              11
2             101              12
2             102              10
2             102              11
<last record removed>

期望的结果:

company_ids   department_ids   team_ids
1-1           101-102          10-12
2-2           101-101          10-12
2-2           102-102          10-11

结果组的优先级并不是非常重要。例如,之前的结果与以下内容同义:

company_ids   department_ids   team_ids
1-2           101-102          10-11
1-1           101-102          12-12
2-2           101-101          12-12

任何帮助将不胜感激!预先感谢您!

sql google-bigquery
1个回答
0
投票

根据您的数据, 我们必须过滤 company_id 及其各自的 department_idteam_id,然后再次需要从 department_id 及其各自的 team_id 过滤唯一数据。然后再进行一次过滤以获得更高和更低team_id 的。

我认为从背面意味着从 team_id 过滤,然后从 department_id 过滤,然后从 company_id 过滤,这将为您提供轻松解决此问题的过程。

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