1
我要顯示一個日期範圍(統計)喜歡的:使用外生在Postgres的generate_series並檢索空值設爲「0」
Dates | Count
--------------------
"2016-09-01" | 0
"2016-09-02" | 0
"2016-09-03" | 0
"2016-09-04" | 0
"2016-09-05" | 0
"2016-09-06" | 12
"2016-09-07" | 9
"2016-09-08" | 0
"2016-09-09" | 90
原始SQL查詢:
select date(d) as day, count(clicks.id)
from generate_series(
current_date - interval '13 day',
current_date,
'1 day'
) d
left join clicks on date(clicks.inserted_at) = d and clicks.link_id = 15
group by day order by day;
我很想與外生使用它沒有我找到了原始SQL
最接近的事是:
query = from c in Like
where: c.link_id == ^link.id
...
from(c in query,
join: day in fragment("select generate_series(current_date - interval '10 day', current_date, '1 day')::date AS d "),
on: fragment("date(?) = d", field(c, :inserted_at)),
group_by: fragment("day"),
order_by: fragment("day"),
select: %{
day: fragment("date(d) as day"),
count: count(c.id)
}
)
但它只返回表格中的日期而不是整個範圍(即;對於沒有像那天
哦謝謝@Dogbert非常爲您的解決方案,它的偉大工程,並解釋:) – kayne
謝謝你這麼多的輝煌! – pip