Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/73.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-显示具有相同ID的多行_Sql_Amazon Athena - Fatal编程技术网

SQL-显示具有相同ID的多行

SQL-显示具有相同ID的多行,sql,amazon-athena,Sql,Amazon Athena,有人能帮我解决这个问题吗?我是公司的初级分析师,我承担了一个项目。我们将AdobeAnalytics数据导出到AWS中,并使用Athena进行查询。我们有一个表格,显示了客户在我们网站上进行的每一次交互,作为一个非常简化的版本,它看起来有点像这样 我正在尝试编写一些代码,以查找购买id是否为空,然后显示所有记录,但仅显示一个访客id。我尝试了以下方法: SELECT * FROM webvisits WHERE channel_visit_id IN (SELECT channel_visi

有人能帮我解决这个问题吗?我是公司的初级分析师,我承担了一个项目。我们将AdobeAnalytics数据导出到AWS中,并使用Athena进行查询。我们有一个表格,显示了客户在我们网站上进行的每一次交互,作为一个非常简化的版本,它看起来有点像这样

我正在尝试编写一些代码,以查找购买id是否为空,然后显示所有记录,但仅显示一个访客id。我尝试了以下方法:

SELECT * FROM 
webvisits
WHERE channel_visit_id IN 
(SELECT channel_visitor_id
FROM webvisits
WHERE post_purchaseid not like ''
limit 1)
and cast(dt as date) = current_date
但我只是零结果发现,感谢任何帮助提前感谢


Kris

这里有一种使用公共表表达式cte和联接的方法:

with cte as (select distinct customer_visit_id 
             from mytable where purchase_id <> ''
             -- if missing values are null instead of a blank char you would write purchase_id is not null
) 
select * from mytable join cte using(customer_visit_id)
内部联接将确保只返回具有customer\u visit\u id的行


此查询将返回完成购买的用户的所有条目。如果您只想要一个,您可以在cte中添加一个限额

post_purchaseid非空?!?您允许空白post_purchaseid吗?请尝试post_purchaseid不为NULL的位置。如果选择的意图。。。限制1是要获取不同的项,请选择“不同…”。。。可用。不清楚所需的输出是什么。如果你想要一份在某一天至少购买一次的所有客户的列表,你可以使用GROUP BY customer\u visit\u id和WHERE post\u purchaseid按建议不为空。大家好,感谢快速回复,为了便于阅读,我将回答这些问题-@jarlh直到客户完成购买时丢失的行才分配购买ID,在此之前它本质上是空字符串,因此NOTNULL不起作用-@AndrewMorton嗨Andrew我想下面的答案解释了我想做得更好的地方-@如果我解释得不好,Guy会道歉。基本上,我正在尝试编写一个脚本,允许我找到一个购买ID,并仅调出该客户的所有数据,而无需运行多个查询。目前,我必须从web访问中运行SELECT visitor\u ID,其中purchase\u ID不象LIMIT 1,然后复制购买ID,并从web访问中运行代码“SELECT*,其中purchase\u ID就像UPPER的12345481851etcHi Nicolas一样,非常感谢您的回复。我似乎达到了目的,上面的查询是拉入记录,这是惊人的,但它是拉入多个购买id的有没有办法让这个拉入所有的客户互动像它这样做,但只拉入关于1个购买id的数据,而不是在cte中找到的所有数据?你可以在cte中添加一个限制1,这将返回一次购买,这是我尝试过的,结果为零,嗯。。。只有当您的customer\u visit\u id=null时,才会发生这种情况。你能在限制为1的情况下运行cte以查看它打印出的值吗?嗨,Nicolas,我让它工作了,非常感谢,你的解决方案是正确的,但是因为我的works数据集太大,所以只是超时了。添加一个日期约束,其中dt>current_date-interval'1'day来获取最后24小时的数据,这只会让它工作得很有魅力,非常感谢