我在表格中存储了对我网站的所有访问,我存储了日期,访问过的页面和会话ID。
理论上,我可以根据他们的会话ID对某人进行分组,这算作一次访问。
然而,我想要做的是通过表格获取每个日期的访问总数。所以它会按会话ID分组,然后按日期分组。
即:
SELECT DATE(added) as date, COUNT(*) FROM visits GROUP BY sessionID, date
这不起作用,因为它检索该会话ID的访问总数和日期。
我的表结构看起来有点像这样:
----------------------------------
| id | added | page | sessionid
----------------------------------
有什么想法吗?
我的查询给我的结果如下:
2010-11-24 | 2
2010-11-24 | 14个
2010-11-24 | 17个
2010-11-24 | 1个
虽然我希望得到的东西更像是1日期以外的所有人,即:
2010-11-24 | 34个
答案 0 :(得分:3)
每个日期包含每个请求的不同时间。如果您在DATE
子句中使用GROUP BY
,就像在SELECT
子句中一样,那将解决您的问题。
通过sessionID分组,它将为每个会话创建一行。如果不是按sessionID进行分组,而是使用COUNT(DISTINCT sessionID)
,它将联系该日期的不同数量的会话ID。
SELECT DATE(added) as date, COUNT(DISTINCT sessionID) as sessions FROM visits GROUP BY DATE(added)