我们能否通过嵌套的group by获得每个用户的最新可用平均季度收入?sqlite

我们能否通过嵌套的group by获得每个用户的最新可用平均季度收入?sqlite,sqlite,nested,nested-loops,Sqlite,Nested,Nested Loops,我们能否通过嵌套的group by找到每个用户最近可用季度收入的平均值?sqlite已经考虑了一段时间,如果有不清楚的地方,请发表评论 更新了一个限制:无需案例,因为它要求我们提前知道3对我来说并不实际 假设我们的收入表为: income: uid (string), jobid (string), month (string), quarter(string), year (integer), earned (integer) A01 uber

我们能否通过嵌套的group by找到每个用户最近可用季度收入的平均值?sqlite已经考虑了一段时间,如果有不清楚的地方,请发表评论 更新了一个限制:无需案例,因为它要求我们提前知道3对我来说并不实际

假设我们的收入表为:

income: uid (string), jobid (string), month (string), quarter(string), year (integer), earned (integer)
          A01                uber      jan             w               2021                     2500         
          A01                uber      dec             f               2020                     1500                  
          A01                uber      nov             f               2020                     2000                  
          A01                uber      oct             f               2020                     1500                  
          A01                uber      sep             f               2020                     2000                  
          A01                uber      aug             f               2020                     1500                  


          A03                  dj      aug             f               2020                     1500                  
          A03                  dj      jul             f               2020                     2000                  
          A03                  dj      jun             f               2020                     1500                  
          A03                  dj      may             s               2020                     2000                  

          A02                chef      nov             f               2020                     2000                  
          A02                chef      oct             f               2020                     1500                  
          A02                chef      sep             f               2020                     2000                  
如果可能,希望使用一个查询按uid返回订单:

 A01                w                     2021                     2500    
 A02                f                     2020                     1833.33 
 A03                f                     2020                     1666.66    
到目前为止,我所拥有的:

select uid, quarter,year, avg(earned) 
from income 
group by year, quarter;
返回:

     A01                w                     2021                     2500    
     A01                f                     2020                     1700    
     A03                f                     2020                     1666.66    
     A03                s                     2020                     2000    

     A02                f                     2020                     1833.33 
注意如何

 A01                f                     2020                     1700             
 A03                s                     2020                     2000    
这里是额外的,我知道我们可以运行另一个查询来消除,但是有人能想到通过一个查询获得所需的结果吗?

您可以使用行数和案例表达式来标识最近的年份和季度

以cte为例 选择uid、年度、季度、平均收入,作为平均收入, 按uid划分的行数 按年份说明订购,当“f”时按季度订购,然后按3 那是什么时候 当“w”时,则为1端描述 收入 按uid、年份、季度分组 选择uid、年度、季度、平均收入 来自cte 其中rn=1;
您的预期输出背后的逻辑是什么?假设我们在银行总线中。那么我们想知道每个用户在财务上的表现如何?获取最新可用的平均季度收入?更具体地说:为什么您只预期A01的秋季季度和A03的春季季度?@TimBiegeleisen我想您是对的,时间顺序是w,s,然后是f,我们希望获取最新可用的平均季度收入。我们可以不使用行数和案例吗?似乎我们知道有3个提前的时间,这是不一样的实际?还是这是惯例?如果你能添加一点解释,我将不胜感激。这是我知道如何轻松编写查询的唯一方法。对于每个用户,您需要最新的一年,然后是最新的一个季度,f比s更近,比w更近。是的,我们可以使用