当前位置: 首页 > 知识库问答 >
问题:

是否有办法根据其他列中的数据列出事件的最新日期?

马胜泫
2023-03-14

我正在编写一个查询,显示每个有大家庭的人在过去一年中的最新工作开始日期(我不应该显示未来日期)。可能有多个家庭(在多个州)在同一天开始工作。在这种情况下,我需要列出州、两个人以及各自的日期。但是,我应该只列出每个州/人对一次。

此外,如果此人在过去一年内没有开始工作,我仍然应该列出此人的姓名,但在州名称的位置,我应该让查询返回NULL,日期返回NULL。

以下是原始表格中的日期:

LOC FAM PPL MILESTONE_ID    MILESTONE_NAME  START_DATE  
WI  Smith   Mike    1   End College 9/4/2017 0:00  
WI  Smith   Mike    2   Start Job   9/4/2017 0:00  
WI  Smith   Bob 1   End College 6/4/2019  
WI  Smith   Bob 2   Start Job   6/4/2019  
IL  Thomas  Mike    1   End College 1/4/2019  
IL  Thomas  Mike    2   Start Job   6/4/2019  
IL  Thomas  Bob 1   End College 12/4/2019  
IL  Thomas  Bob 2   Start Job   6/4/2019  

我知道我需要使用子查询来获取最新的作业开始日期,但我的子查询没有按预期运行。我也尝试过使用CTE,但也不起作用。

这是我到目前为止所拥有的。我还没有让子查询正常工作。我仍然需要添加上面情况的NULL部分

Select family.*     
From 
FAMILY.KEYINFO      as  family     
Inner Join  
(Select family.milestone_id, MAX(family.start_date) as LatestDate  
    from FAMILY.keyinfo  
    group by milestone_id) groupeddate  
    on family.milestone_id=groupeddate.milestone  
    where family.start_date<= CURRENT_TIMESTAMP   
    and family.start_date > DATEADD(year,-1,GETDATE())  

如果查询正确,我希望得到以下答案:

LOC PPL     START_DATE  
N/A Mike    N/A  
N/A Mike    N/A  
WI  Bob 6/4/2019  
IL  Mike    6/4/2019  
IL  Bob 6/4/2019

共有1个答案

丌官开宇
2023-03-14

您似乎想要窗口功能:

select f.*
from (select f.*,
             rank() over (partition by fam order by start_date desc as seqnum
      from families f
      where milestone_name = 'Start Job'
     ) f
where seqnum = 1;
 类似资料:
  • 我有一个带有几列的。其中一列包含使用货币的符号,例如欧元或美元符号。另一列包含预算值。例如,在一行中,它可能意味着5000欧元的预算,而在下一行中,它可能意味着2000美元的预算。 在熊猫我想添加一个额外的列到我的DataFrame,正常化的欧元预算。所以基本上,对于每一行,如果货币列中的符号是欧元符号,新列中的值应该是预算列中的值*1,新列中的值应该是预算列的值*0.78125如果货币栏中的符号

  • 我有一个如下所示的数据表 它有代表名称的p列和代表值的t列。t1是对应于p1、t2到p2等的值... 在每一行上,p列的值都是唯一的(或)。t列中的值也是如此。 我要做的是创建三个新列: ,每行所有t列的最小值(不包括NA) ,如果t_min存在(不是NA),则p列的对应值…因此,如果t2列具有t-min值,则列的对应值 ,具有p_min值的列的名称。因此,如果p_min值来自column,则“p

  • 假设我有一个名为mytable的表,它看起来像这样: 我希望能够更新所有的记录在p6列添加到39但只为行有不同的p2值。换句话说,结果表应该如下所示: 我将p6行着色为黄色,以显示它不应该移动的地方,因为所有的p2单元格都是灰色的,它们的值是相同的。绿色的p6行应该会增长,因为p2也会增长,所以我把+39加到所有的行上。示例中的最后第13行再次为黄色,因为12行上的p2=13行上的p2。 在Gor

  • 问题内容: 假设我在redis中有以下键: 密钥名称: setkey hashkey zsetkey 当我输入命令: 我正确地得到所有上述密钥列表。要获取特定键的数据类型,我们使用命令。 有没有办法列出Redis中的所有键及其数据结构?例如: setkey set hashkey hash zsetkey sorted set 是否有命令/本机方式来实现这一目标?提前致谢。 问题答案: 首先,您不

  • 问题内容: 我想比较在创建新列的两列的值。如果它们等于1,我想要1,否则等于0。 我得到了以下错误 问题答案: 您需要将布尔型蒙版转换为: 样品: 因为比较列的输出不是标量,而是(和)和值,所以会出现错误。 因此需要或 用于返回标量或。

  • 我有一个PySpark数据帧,它有几个字段,例如: 我想创建一个新列,将其他注释的值混合到一个新字符串中。期望的输出为: 我正在尝试做(伪代码): 如何实现这一点?