2016-08-18 68 views
0

我有一个名为“视频”有以下的列视图:MySQL的返回不同的值

email(varchar) 
time(varchar) 
page(varchar) 

视图有行的,每次有一个人给电子邮件访问了一个页面

我想返回每个电子邮件地址显示的结果,他们访问至少一个页面的天数,以及他们访问了多少个不同日期的页面。

我的一个问题可能是时间存储为varchar。下面是格式的时间在一个例子

2016-01-25T14:36

回答

0

您可以通过天

select email, date(time), count(*) 
from mytable 
group by email, date(time); 

来回访问的次数使用一组
select email, count(distinct page) 
from mytable 
group by email; 
1

使用STR_TO_DATE来提取和解释您的time字符串的日期部分。使用COUNTDISTINCT关键字来计算不同的日期和不同的页面。

SELECT email 
    , COUNT(DISTINCT STR_TO_DATE(time, '%Y-%m-%d')) AS visit_days 
    , COUNT(DISTINCT page) AS visit_pages 
    FROM videos 
GROUP BY email 
; 
+0

完美的作品,谢谢!我不确定如何在单个查询中执行两个单独的计数 – dmohr