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