在用户日表中查找最近的购买日期

     2023-05-08     196

关键词:

【中文标题】在用户日表中查找最近的购买日期【英文标题】:Find most recent date of purchase in user day table 【发布时间】:2018-09-25 20:36:28 【问题描述】:

我正在尝试组合一个查询,该查询将获取每个用户最后一次购买的日期、购买金额和交易次数。我从一个用户日表中提取,该表包含用户每次在应用程序中执行任何操作(购买与否)时的一行。基本上我想要得到的是交易数量字段大于零的最近日期。当我要查找的只是最后一次购买时,下面的查询返回特定用户购买的所有天数,因此我想要获取的是所附屏幕截图中显示的第一行。

screen shot of query and result set

select tuid, max(event_day), 
purchases_day_rev as last_dop_rev, 
purchases_day_num as last_dop_quantity,  
purchases_day_rev/nullif(purchases_day_num,0) as last_dop_spend_pp
from 
(select tuid, event_day,purchases_day_rev,purchases_day_num 
from
app.user_day
where purchases_day_num > 0
and tuid='122d665e-1d71-4319-bb0d-05c7f37a28b0'
group by 1,2,3,4) a
group by 1,3,4,5

【问题讨论】:

【参考方案1】:

我不打算评论您的查询逻辑...如果您想要的只是结果集的第一行,您可以尝试:

<your query here> ORDER BY 2 DESC LIMIT 1 ;

ORDER BY 2 DESC 在 max(event_day) 上对结果集进行排序,LIMIT 1 仅提取第一行。

【讨论】:

【参考方案2】:

我不知道您数据的所有细节,但我不明白为什么您在没有任何聚合函数(sum、average、min、max 等)的情况下在子查询中进行分组。话虽如此,我会尝试这样的事情:

select tuid
,event_day
,purchases_day_rev as last_dop_rev
,purchases_day_num as last_dop_quantity
,purchases_day_rev/nullif(purchases_day_num,0) as last_day_spend_pp
from app.user_day a
inner join
(
select tuid
,max(event_day) as MAX_DAY
from app.user_day
where purchases_day_num > 0
and tuid='122d665e-1d71-4319-bb0d-05c7f37a28b0'
group by 1
) b
on a.tuid = b.tuid
and a.event_day = b.max_day;

【讨论】:

从多个表中获取 MAX 日期时间事件,并按 ID 输出最近事件的简单列表

】从多个表中获取MAX日期时间事件,并按ID输出最近事件的简单列表【英文标题】:GettingMAXdatetimeeventfrommultipletables,andoutputingasimplelistofmostrecenteventsbyID【发布时间】:2021-03-2507:19:09【问题描述】:我有一张桌子:和其他多个表-在... 查看详情

查找表中的任何日期是不是在两个日期之间

】查找表中的任何日期是不是在两个日期之间【英文标题】:FindingifAnydateinatableisbetween2dates查找表中的任何日期是否在两个日期之间【发布时间】:2021-06-0716:14:03【问题描述】:我有一个SQL查询,我需要找出与特定客户相关的表... 查看详情

如何从日期范围查询中查找表中的一组缺失日期

...一个高效且有点优雅(如果可能)的解决方案,以便在将用户指定的日期范围与postgresql中的汇总表进行比较后获取缺失日期的数组。我知道的一种方法是将范围放 查看详情

在不同的表中返回最近的日期

】在不同的表中返回最近的日期【英文标题】:Returningnearestdatetodateinadifferenttable【发布时间】:2011-12-0815:35:34【问题描述】:我有两张表,一张称为事件,一张称为文档。每个表有两个日期列,开始和结束(因此事件开始、事... 查看详情

在包含多个开始和日期列表的表中查找日期,如果找到则返回默认值

】在包含多个开始和日期列表的表中查找日期,如果找到则返回默认值【英文标题】:Lookupadateinatablewithalistofmultiplestartanddatesandreturnadefaultvalueiffound【发布时间】:2015-10-0504:37:03【问题描述】:如果正在查找的日期介于另一个表... 查看详情

SQL - 比较表中的日期

】SQL-比较表中的日期【英文标题】:SQL-Comparingdatesinatable【发布时间】:2016-03-2913:35:20【问题描述】:如何使用SQL从原表中获取修改后的表?基本上,我想做的是根据日期比较客户数据的行。在一个月内15天内购买任何商品的客... 查看详情

MySQL从父表中查找创建日期在日期之前和之后的子记录

】MySQL从父表中查找创建日期在日期之前和之后的子记录【英文标题】:MySQLfindchildrecordswherecreateddateisbeforeandafterdatefromparenttable【发布时间】:2020-10-2201:40:17【问题描述】:我使用的是MySQL8.0版。我有2张桌子:approvals和activitiesapp... 查看详情

查找个人最近发生的事件

...,我没有找到任何其他满足我特殊需求的帖子。第1列是用户ID第2列是发生的操作类型,并且第3列是操作发生的日期时间戳我的目标是按user_id分组,并将不同操作类型的最新列作为自己的列 查看详情

在 SQL Server 中查找最近的日期

】在SQLServer中查找最近的日期【英文标题】:FindclosestdateinSQLServer【发布时间】:2012-12-1023:34:07【问题描述】:我有一张表dbo.X和DateTimecolumnY可能有数百条记录。我的存储过程有参数@CurrentDate,我想找出上表dbo.X中columnY中小于和... 查看详情

基于最近日期的 MS Access 中的 SQL SELECT 查询

...从Stock表中选择与PriceFeed表中符号相同的股票详细信息。用户输入文本框为txtMini,表单名称为 查看详情

对于特定的日期时间,在 [关闭] 之前和之后查找日期时间最近的记录

】对于特定的日期时间,在[关闭]之前和之后查找日期时间最近的记录【英文标题】:Foraparticulardatetime,findarecordwiththeclosestdatetimebeforeandafter[closed]【发布时间】:2021-07-1908:14:53【问题描述】:让我们有一个MySQL数据库表,其中包... 查看详情

在字符串数组中查找最近的日期

】在字符串数组中查找最近的日期【英文标题】:Findnearestdateinstringarray【发布时间】:2017-06-2818:20:41【问题描述】:所以,我有一个已排序的NSArray,其中包含NSString对象(从服务器下载),格式为:yyyy-MM-dd。差不多是这样的:N... 查看详情

如何在 iOS 上查找用户丢失的应用内购买?

】如何在iOS上查找用户丢失的应用内购买?【英文标题】:Howtofinduser\'slostin-apppurchasesoniOS?【发布时间】:2019-10-0314:22:50【问题描述】:所以我按照官方手册,实现了这个:https://developer.apple.com/library/archive/releasenotes/General/Validate... 查看详情

使用 JavaScript 在数组中查找最近的日期

】使用JavaScript在数组中查找最近的日期【英文标题】:FindclosestdateinarraywithJavaScript【发布时间】:2012-08-0111:24:24【问题描述】:我有一个包含天数的数组。每一天都是一个对象,例如:day_year:"2012",day_month:"08",day_n... 查看详情

使用 MySQL 从点表中查找最近的点

】使用MySQL从点表中查找最近的点【英文标题】:FindnearestpointswithMySQLfrompointsTable【发布时间】:2016-07-0119:32:12【问题描述】:我有一个像这样的DBSchema(来自thistutorialbyGoogle)-所以他们在图中的实际点是这样的-我想要的是找到... 查看详情

sql查询获取最近4个星期五的日期

...述】:我想从下表中获取最近4个星期五的日期。取决于用户输入计数将存储在另一个表中,并基于该值我想获取日期。例如,如果计数是5,我想获取最后5个星期五的日期。---------------------------------------------Id|fridaydate- 查看详情

Oracle - 查找不在表中的所有日期

】Oracle-查找不在表中的所有日期【英文标题】:Oracle-Findalldatesthataren\'tinatable【发布时间】:2013-01-1016:56:10【问题描述】:我们有一个包含DATE列的表。我们如何编写一个脚本来返回未来n年内我们在表格中没有给定周末日期的任... 查看详情

在 MySQL 表中查找每个用户的最新位置

】在MySQL表中查找每个用户的最新位置【英文标题】:FindthelatestlocationofeachusersinaMySQLtable【发布时间】:2014-08-2710:40:09【问题描述】:我有这张表,我想在其中使用SQL查询查找每个用户的最新位置。该表包含(1)电子邮件、(2)时间... 查看详情