我有一个sqlite数据库,它包含url和每周访问的次数。它是这样存储的:
uid, url, date, nb_visits,...
我想得到每一个URL的访问量的演变按日期分组。可能看起来像:
"my_url_1","45,54,76,36,78"
这里我的假设是数据库中存储了5个日期,不需要这些日期,只希望它们从旧到新排序我试过这样的东西,但不接受第二个选择中的2字段
select url, visits,
(select sum(visits) from data d2 where d2.url=d1.url group by date) as evol
from data d1
where date = (select max(date) from data);
这个查询不起作用只是想分享我正在尝试做的事情感谢的帮助
您想要的是每个url的GROUP_CONCAT()
的结果
聚合函数GROUP_CONCAT()
的问题在于它不支持ORDER BY
子句,您需要根据日期对访问进行排序,因此不能保证您得到的结果是正确的
在SQLite中还有一个GROUP_CONCAT()
窗口函数,它支持ORDER BY
子句,可用于返回您想要的结果:
SELECT DISTINCT url,
GROUP_CONCAT(visits) OVER (
PARTITION BY url
ORDER BY date
ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING
) visits
FROM data
查看简化的演示
你在找group_concat()
吗?
select url, group_concat(visits)
from (select d.*
from data d
order by url, date
) d
group by url;
注意:SQLite不支持将order by
作为group_concat()
语法的一部分。理论上,子查询中的排序应该具有排序日期的预期效果。