Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql DISTINCT不会删除Google BigQuery中的所有重复项_Sql_Google Bigquery_Duplicates_Distinct - Fatal编程技术网

Sql DISTINCT不会删除Google BigQuery中的所有重复项

Sql DISTINCT不会删除Google BigQuery中的所有重复项,sql,google-bigquery,duplicates,distinct,Sql,Google Bigquery,Duplicates,Distinct,我正在使用以下查询来查询和调整我的客户的购买数据: SELECT DISTINCT (order_number), email, first_name, last_name, purchase_date, order_price, source_id, row_number() over(partition by email order by purchase_date) order_count, date_diff( date(purchase_date), coalesce(date(lag

我正在使用以下查询来查询和调整我的客户的购买数据:

SELECT
DISTINCT (order_number),
email,
first_name,
last_name,
purchase_date,
order_price,
source_id,
row_number() over(partition by email order by purchase_date) order_count,
date_diff(
date(purchase_date),
coalesce(date(lag(purchase_date) over(partition by email order by purchase_date)), date(purchase_date)),
day
) purchase_latency 
FROM
(select distinct (order_number), 
email, 
first_name, 
last_name,
purchase_date, 
order_price,
source_id
FROM my_dataset_orders where source_id != "test_order" AND order_price != 0)
如您所见,我希望避免数据集中出现重复的值“order_number”。因此,正如您在查询中看到的那样,我尝试了两种方法来删除重复项:第一次是在第2行中立即使用的第一个DISTINCT,第二次是在我已经尝试选择DISTINCT值的FROM部分中


但是,当我将最终数据集作为CSV下载时,数据中仍有一些剩余的订单号重复。是否有人知道如何避免这种情况或我的错误在哪里?

如果您希望每个订单都有一行,那么一种方法是:

select array_agg(o limit 1)[ordinal(0)].*
from my_dataset_orders o
where source_id <> 'test_order' and order_price <> 0
group by o.order_number
选择数组_agg(o限制1)[序号(0)]*
从我的\u数据集\u订单
其中来源id为“测试订单”且订单价格为0
按订单号分组

如果您希望每个订单有一个任意行,那么一种方法是:

select array_agg(o limit 1)[ordinal(0)].*
from my_dataset_orders o
where source_id <> 'test_order' and order_price <> 0
group by o.order_number
选择数组_agg(o限制1)[序号(0)]*
从我的\u数据集\u订单
其中来源id为“测试订单”且订单价格为0
按订单号分组

为什么在
不同的
后面的列周围有括号?你认为他们真的做了什么吗?嘿!是的,的确如此!我想这就是我可以选择“订单号”的不同值而不考虑其他值的不同值的方式。为什么在
不同的
后面的列中有括号?你认为他们真的做了什么吗?嘿!是的,的确!我想这就是我可以选择“订单号”的不同值的方式“没有将其他值视为不同的值。嘿!谢谢!我不完全了解代码以及如何将其与现有查询相结合。我还认为解决方法可以是只选择order_number,然后应用distinct,然后左键加入我的查询,如上所示。但我也不知道如何正确应用此方法。”d、 @sql newby-…这将是子查询。嘿!谢谢!我还不完全了解代码以及如何将其与现有查询相结合。我还认为解决方法可以是只选择order_number,然后应用DISTINCT,然后像上面所示左加入我的查询。但我也不知道如何正确应用此方法。@sql newby-…这将是子查询。