我有一个包含数据的表,其中AI列中有重复数据的组(一个接一个)。
我只希望仅基于A列中的值选择每个组的第一行(没有其他条件)。提醒您,我还希望为提到的新找到的行选择所有相应的列(我不想排除它们)。
有人可以帮助我进行适当的查询。
这是一个示例: SAMPLE
谢谢!
你可以这样尝试:
#standardSQL
SELECT
* EXCEPT(rn)
FROM (
SELECT
*,
ROW_NUMBER() OVER(PARTITION BY columnA ORDER BY columnA) AS rn
FROM
your_dataset.your_table)
WHERE rn = 1
Run Code Online (Sandbox Code Playgroud)
这将返回:
Row columnA col2 ...
1 AC1001 Z_Creation
2 ACO112BISPIC QN
...
Run Code Online (Sandbox Code Playgroud)
添加LIMIT 1在查询末尾
就像是
SELECT name, year FROM person_table ORDER BY year LIMIT 1
Run Code Online (Sandbox Code Playgroud)
#standardSQL
SELECT row.*
FROM (
SELECT ARRAY_AGG(t LIMIT 1)[OFFSET(0)] row
FROM `project.dataset.table` t
GROUP BY columnA
)
Run Code Online (Sandbox Code Playgroud)
您现在可以使用qualify更简洁的解决方案:
select
*
from
your_dataset.your_table
where true
qualify ROW_NUMBER() OVER(PARTITION BY columnA ORDER BY columnA) = 1
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3965 次 |
| 最近记录: |