【发布时间】:2018-03-07 03:11:38
【问题描述】:
我想知道用户每周访问网站“A”的平均日期。如果用户没有访问过网站“A”,我会排除数据(例如,id = 2)。而且我还需要考虑日期范围(将其限制在一周范围内,例如,2018 年 1 月 1 日至 2018 年 1 月 7 日)
示例输入(表:用户)
id date website
1 01-JAN-2018 A
1 03-JAN-2018 B
1 04-JAN-2018 C
1 04-JAN-2018 C
2 03-JAN-2018 C
3 03-JAN-2018 A
3 05-JAN-2018 B
4 05-JAN-2018 A
第一步是这样的:
id date website
1 01-JAN-2018 A
1 03-JAN-2018 B
1 04-JAN-2018 C
1 04-JAN-2018 C
3 03-JAN-2018 A
3 05-JAN-2018 B
4 05-JAN-2018 A
输出将仅返回用户访问网站(包括 ABC)的平均日期。在这种情况下,用户 1 每周访问三天(忽略重复),用户 3 每周访问两天。平均点击日期为总和(天)/用户数。
我的第一个想法:
SELECT COUNT(Date), Date
FROM user
WHERE id IN (
SELECT id FROM user
WHERE web = 'A'
);
假设我只想考虑本周范围(2018 年 1 月 1 日到 2018 年 1 月 7 日)。我想算出一周内访问的平均日期。对此有什么想法吗?谢谢!
【问题讨论】:
-
演示在 MySQL 中,所以我删除了 Postgres 标签。
-
我完全不知道“2”是如何计算的。
-
将日期存储为日期