SQL返回基于日期范围的出现次数

时间:2017-03-08 20:10:35

标签: sql

我试图根据日期范围和两个(出现)值之间的组返回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次(根据指定的日期范围)。

谢谢!

1 个答案:

答案 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;

我不确定“日期范围”是什么意思,但您可以在子查询中定义范围,并在子查询和外部查询中将其用于聚合。