google 大查询中的嵌套分区和排名

Nested partitioning and ranking in google big query

下面是数据的样子-

我想对这些数据进行不同级别的排序以实现最终输出。

1 级: 每当名称有重复值时,我想为每个不同的 (id, name,last_name, gender) 元组获得最少的排名。

1 级结果:

2 级: 在级别 2 中,我希望获得特定名称的每个性别类别的最低排名。

2 级结果:

最终输出: 对于每个名称,如果 'male' 和 'female' 排名相同,则 return 以 table 中最先出现的为准。如果不同 return 排名最低的记录。

预计最终结果-

我怀疑你可以按名称分区:

select *
from (
    select
        t.*,
        row_number() over(partition by name order by ranking, id) rn
    from mytable t
) t
where rn = 1

id 的第二个排序标准打破平局。

以下适用于 BigQuery 标准 SQL

#standardSQL
SELECT AS VALUE ARRAY_AGG(t ORDER BY ranking, id LIMIT 1)[OFFSET(0)]
FROM `project.dataset.table` t
GROUP BY name