我试图根据日期范围和两个(出现)值之间的组返回ID出现次数。
数据很简单:
defmodule MyController do
def init_request(conn, params) do
ref = LongRunningTask.start(params)
json conn, %{ref: ref}
end
def poll(conn, %{"ref" => ref}) do
case LongRunningTask.get_result(ref) do
:still_not_done -> json conn, %{result: "nope, poll again"}
result -> json conn, %{result: result}
end
end
end
我想要完成的结果如下:
Date | ID
发生次数是ID在两个值之间显示的次数。例如1至2次(根据指定的日期范围)。
谢谢!
答案 0 :(得分:2)
您可以进行两个级别的聚合:
select date,
sum(case when cnt <= 2 then 1 else 0 end) then times_1_2,
sum(case when cnt > 2 and cnt <= 5 then 1 else 0 end) then times_3_5,
. . .
from (select date, id, count(*) as cnt
from t
group by date, id
) di
group by date;
我不确定“日期范围”是什么意思,但您可以在子查询中定义范围,并在子查询和外部查询中将其用于聚合。