Sql 区分和超划分

Sql 区分和超划分,sql,google-bigquery,Sql,Google Bigquery,我正在bigquery中处理一个查询,我有以下问题。 我的问题如下: SELECT DISTINCT (concat(rut,created_at)),*,ROW_NUMBER () OVER (PARTITION BY rut ORDER BY created_at ASC) AS ranking FROM table WHERE DATE(created_at) <= "2020-12-03" order by rut,ranking 问题在于DISCINT

我正在bigquery中处理一个查询,我有以下问题。 我的问题如下:

SELECT DISTINCT (concat(rut,created_at)),*,ROW_NUMBER () OVER (PARTITION BY rut ORDER BY created_at ASC) AS ranking 
FROM table 
WHERE DATE(created_at) <= "2020-12-03" 
order by rut,ranking
问题在于DISCINT并没有消除重复数据,相反,如果我消除了过度分区,并将查询保留如下,如果它消除了重复数据

SELECT DISTINCT (concat(rut,created_at)) ,*
FROM table 
WHERE DATE(created_at) <= "2020-12-03" 
order by rut
很明显,这是一个discint和OVER PARTITION如何工作的问题,但我找不到解决方案

您需要这样做:

select * ,ROW_NUMBER () OVER (PARTITION BY rut ORDER BY created_at ASC) AS ranking  
from (
SELECT DISTINCT (concat(rut,created_at)),*
FROM table 
WHERE DATE(created_at) <= "2020-12-03" 
) tt
order by rut,ranking

你想干什么?这个问题没有真正意义。使用distinct选择*可能不会删除任何行。请以表格文本形式提供示例数据和所需结果。不清楚您的查询的目的是什么。